在我的应用程序中,我在点击元素后使用了一些逻辑。
例如:
HTML
S
JS
<h3 ng-click="showAlert('text')">this is text! (try to click and select)</h3>
当我点击元素时:一切正常。一切都按预期完成。
但是!
为什么,当我尝试选择文字时,我的活动也会被解雇?
如何跳过选择事件?
plunker:click
答案 0 :(得分:4)
您可以在mousedown
和mouseup
之间获得时间,以确定是单击还是正在选择文字。
像这样: Demo
(function(){
angular.module("app", []);
angular.module("app")
.directive("noclick", function(){
return {
restrict: "A",
link: function(scope, element, attr){
scope.time= Date.now();
element.on("mousedown mouseup", function(e){
if(e.type == "mousedown"){
scope.time= Date.now();
}
if(e.type == "mouseup"){
if(Date.now() - scope.time> 300){
return false;
}else{
console.log("clicked");
}
}
});
}
}
});
})(window, angular);
注意:我在这种情况下使用指令。