angularJS 单击ng-click和双击ng-dblclick嵌套或者出现在同一元素 避免事件互相干扰方法
来源:互联网 发布:网络游戏破解软件大全 编辑:程序博客网 时间:2024/05/18 02:22
欢迎来到Altaba的博客 2017年11月22日
在实际开发中遇到这样一问题:项目是基于angular开发的,表格中tr绑定了单击跳转事件 tr中每个td绑定了双击事件,当你想通过双击去操作td时候,发现总是会触发外部的双击事件,通过查阅资料,测试各种解决办法,一下代码为本人测试,拓展了同一元素上同时绑定单击和双击事件怎么排除互相干扰。欢迎遇到同样问题的童鞋参考解决
<!DOCTYPE html><html lang="en" ng-app="myApp"><head> <meta charset="UTF-8"> <title>Title</title> <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> <style> .box{ width: 300px; height: 200px; background-color: #ccc; margin: 100px; } .container{ width: 100px; height: 100px; background-color: green; } </style></head><body ng-controller="myCtrl"><h3>采用自定义指令实现 获取双击间隔时间控制单价双击事件</h3><div class="box" sglclick="funwang($event)"> <div class="container" ng-dblclick="funwang2($event)"></div></div><h3>采用自定义指令实现 获取双击间隔时间控制单价双击事件</h3><div class="box" ng-click="$evalAsync(funwang($event))"> <div class="container" ng-dblclick="funwang2($event)"> </div></div><h3>同一个元素上面既有单击事件又有双击事件 采用$evalAsync 双击单击同时触发 未能生效</h3><div class="box"> <div class="container" ng-click="$evalAsync(funwang3($event))" ng-dblclick="funwang2($event)"> </div></div><h3>采用$evalAsync 实现子元素单击,父元素双击 未能生效</h3><div class="box" ng-click="$evalAsync(funwang($event))"> <div class="container" ng-dblclick="funwang2($event)"> </div></div><div class="box"> <!--ng-click="$evalAsync(funwang($event))"--> <!-- sglclick="funwang($event)"--> <!--ng-click="funwang($event)"--> <div class="container" ng-dblclick="funwang2($event)" ng-click="$evalAsync(funwang3($event))"> </div></div><script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope,hexafy) { $scope.name = "John Doe"; $scope.funwang = function ($event) { alert('我触发了父元素单击事件') }; $scope.funwang2 = function ($event) { alert('我触发了子元素双击事件') $event.stopPropagation();//阻止冒泡 }; $scope.funwang3 = function ($event) { alert('我触发了子元素单击事件') //$event.stopPropagation();//阻止冒泡 }; }) app.service('hexafy', function() { this.myFunc = function (x) { return x.toString(16); } }) app.directive('sglclick', ['$parse', function($parse) { return { restrict: 'A', link: function(scope, element, attr) { var fn = $parse(attr['sglclick']); var delay = 400, clicks = 0, timer = null; element.on('click', function (event) { clicks++; //count clicks if(clicks === 1) { timer = setTimeout(function() { scope.$apply(function () { fn(scope, { $event: event }); }); clicks = 0; }, delay); } else { clearTimeout(timer); clicks = 0; } }); } }; }])</script></body></html>
阅读全文
0 0
- angularJS 单击ng-click和双击ng-dblclick嵌套或者出现在同一元素 避免事件互相干扰方法
- javascript同一个元素同时绑定click和dblclick事件(同时单击和双击事件)
- AngularJs --ng-click事件
- angularJS中的ng-click和ng-change
- angularjs ng-click获取当前元素
- AngularJS - 在ng-repeat中使用ng-click为元素添加class
- angularjs ng-click 阻止事件冒泡
- AngularJS ng-click bug
- ng-click 事件获取dom元素 angular
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jquery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- AngularJs在ng-click函数中如何获取代表当前元素的DOM对象
- AngularJs在ng-click函数中如何获取代表当前元素的DOM对象
- 判断是否为平方数之和-LintCode
- Java
- 【小白】selenium入门(三)学习笔记
- 推荐系统重要会议和期刊
- Java实现红黑树
- angularJS 单击ng-click和双击ng-dblclick嵌套或者出现在同一元素 避免事件互相干扰方法
- NMEA-0183信息整理与分析
- CentOS7 ssh
- Xen复制虚拟机
- 解决org.xml.sax.SAXParseException:Content is not allowed in prolog
- redis(1)
- FastJSON、Gson和Jackson性能对比和共同缺点,注意事项
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- Elasticsearch(八)elasticsearch数据输入和输出