我正在制作幻灯片库。 我的问题是,当我非常快地点击导航div时,会触发浏览器默认行为(选择内容)。
我的问题是:如何禁止默认的双击行为?
navigationDiv.onclick = function () {
// do something
};
jQuery解决方案也适用,因为我正在使用它。
提前致谢!
答案 0 :(得分:7)
$("yourselector").dblclick(function(){
return false;
});
您还可以使用 event.preventDefault()
$("yourselector").dblclick(function(event){
event.preventDefault();
});
答案 1 :(得分:3)
您可以尝试禁用目标元素的 onselectstart 事件。
navigationDiv.onselectstart=function(){return false}
不确定这是否兼容x-browser。 (我会检查一下)
修改强>
原来这是一个仅限IE的事件。要在Mozilla中完成相同的操作,您必须禁用 -moz-user-select CSS样式。在JavaScript中:
navigationDiv.style.MozUserSelect="none"
说实话,我认为你最好禁用双击事件,如此处的其他评论所述。
答案 2 :(得分:3)
仅供参考,在Firefox和Safari / Chrome中,也可以通过CSS禁用选择:
.navigationDiv {
-moz-user-select: none;
-webkit-user-select: none;
}
我认为当你的目的只是为了防止在某个元素上发生选择时,这会更简单。
答案 3 :(得分:1)
在事件处理程序的末尾放置return false;
应该能够抑制默认选择行为。
答案 4 :(得分:0)
您可以尝试让“dblclick”事件返回false吗?
$('.someStuff').bind('dblclick', function() { return false; });
答案 5 :(得分:0)
取消ondblclick
事件:
navigationDiv.ondblclick = function () {
return false; // cancel default
};
答案 6 :(得分:0)
非常简单:
navigationDiv.ondblclick = function (event) {
// do something
if (!event) event = window.event;
if (event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
};
这适用于IE和Mozilla浏览器。
答案 7 :(得分:0)
仅当在元素BEING CLICKED中调用而不是在父级事件处理程序中调用时,在 dblclick 处理程序中调用 event.preventDefault()会有所帮助。
在一个容器中有多个子级的情况下,默认的双击行为将在一个子级中发生,并上升到其父级。在这种情况下,有2个选项:
答案 8 :(得分:0)
e.preventDefault()
和return false
都不能确保在任何情况下都不会发生双击的默认操作(文本选择)。但是,在阅读了this note和this answer之后,我为自己的类似问题写了一个可行的解决方案:
$(...your selector...)
.on('mousedown',function(e){ if (e.detail>1) return false }) // prevent dblclick default
.on('dblclick', ...your dblclick handler...);