如何覆盖子元素的jQuery绑定?

时间:2011-09-12 11:27:51

标签: jquery forms binding jquery-selectors scroll

我有鼠标操作触发html和body上的自定义函数,但是滚动条和页面上的表单现在对鼠标点击没有反应!

$('html,body').bind('mousedown mouseup mouseover mousemove', function(e){
    e.preventDefault(); //this is required :(
    customFunction();
});

(为什么我需要防止默认?完全自定义功能here

如何在保持表单可用和滚动条功能的同时保留正文绑定?

我在这里有一个 JSFiddle演示,准确显示正在发生的事情:
http://jsfiddle.net/Ywg9T/

1 个答案:

答案 0 :(得分:2)

这是jQuery中的一个错误,与启动选择的事件有关。它过于频繁地发射。有一张票,并计划在1.8中修复。在此期间,您可以通过hackily删除该事件处理程序来修复此问题(其中'element'是您要禁用它的元素 - 在您的情况下,整个文档):

element.onselectstart = function () { return false; };

然后你不必做preventDefault。所以,你的代码看起来像这样:

document.onselectstart = function () { return false; };
(function($){
    var drag = false;
    $("#click").bind('mousedown mouseup mouseover mousemove', function(e) {
        if(e.type === 'mouseover'){ ... }
        if(e.type === 'mousemove'){ ... }
        if(e.type === 'mousedown'){ ... }
        if(e.type === 'mouseup'){ ... }
    });
})(jQuery);