Как переопределить привязку jQuery для дочернего элемента? - PullRequest
1 голос
/ 12 сентября 2011

У меня есть действия мыши, вызывающие пользовательскую функцию в html и body, однако полосы прокрутки и форма, которые есть на странице, теперь перестают реагировать на щелчки мышью!

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

(Почему янеобходимо предотвратить использование по умолчанию? full customFunction здесь )

Как сохранить привязку тела, сохраняя форму и работоспособность полос прокрутки?

У меня есть демонстрация JSFiddle , показывающая, что именно происходит:
http://jsfiddle.net/Ywg9T/

1 Ответ

2 голосов
/ 12 сентября 2011

Это ошибка в jQuery, связанная с событием для начала выбора.Это срабатывает слишком часто.На него подан тикет, который планируется исправить в 1.8.В то же время вы можете решить эту проблему, удачно удалив этот обработчик событий (где «элемент» - это элемент, для которого вы хотите отключить его - в вашем случае - весь документ):

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);
...