Отключить плагин jQuery? - PullRequest
       34

Отключить плагин jQuery?

5 голосов
/ 17 августа 2011

У меня есть плагин, как

$.fn.mycoolplugin

, который связывает mousemove с документом, как

$(document).("mousemove", function() {
    //bunch of stuff
});

после вызова функции на селекторе

$('.myclass').mycoolplugin();

Как бы я отменил это, потому что mousemove привязан к документу, а ДРУГОЕ содержимое в моем коде использует mouseenter и mouseleave?

Ответы [ 2 ]

0 голосов
/ 17 августа 2011

Вы изменили бы, как ваш плагин связывает, а затем освобождает подключенные обработчики следующим образом:

  1. Вы создаете функцию, которая отвечает за связывание всех ваших начальных событий (например, указатель мыши и т. Д.)
  2. Вы создаете функцию, которая отвечает за отмену привязки всех ваших начальных событий.
  3. При привязке к событию не используйте аномальную функцию. Вместо этого определите определенный обработчик для события. Таким образом, когда вы присоединяетесь, вы делаете это так:

    $ (document) .bind ('mousemove', myFuncDelegate);

А затем, когда вам нужно удалить его из области видимости, вы отменяете:

 $(document).unbind('mousemove', myFuncDelegate);

Таким образом, вы только открепите свои события. Подробнее см. http://api.jquery.com/unbind/.

Просто вызовите свой метод bind при загрузке, а когда вы решите его выгрузить, вызовите метод unbind.

0 голосов
/ 17 августа 2011

Вы можете отменить привязку любого обработчика, вызвав .unbind:

$(document).unbind("mousemove");

Это отменит все обработчики mousemove из document.Учтите, что это может нарушить функциональность плагина (с риском взлома любого другого кода / плагина, который добавляет обработчик mousemove к document).

...