/ / Unbind или Reset всички jQuery събития - jquery

Отключете или нулиране на всички jQuery Събития - jquery

Имам страница, на която имам конфигуратор за продукти, този конфигуратор използва ajax .load за зареждане на конфигуратора за различни продукти.

Ако някой конфигурира продукт, кликванията се изпращат,продуктът се добавя, ако потребителят избере отново конфигуратора и зареди същия продукт, всички събития за конфигуратора се удвояват. Значи, всички събития стрелят два пъти ...

Какъв би бил най-добрият начин да възстановите тези събития или да предотвратите тези събития от стрелба повече от веднъж?

Отговори:

2 за отговор № 1

Не знам кой синтаксис използвате, за да свържете, но ако използвате jQuery 1.7 на () можете да направите следното:

$("#myButton").off("click").on("click", function(){
// ....
});

Това ще гарантира, че всички събития на кликванията не са свързанипърво и след това събитието ви за кликване е обвързано. Това обаче е свързано с рискове, ако имате много събития, свързани с кликвания, свързани чрез имена, които също могат да бъдат премахнати, дори ако това не беше вашето намерение.

Ако дадено събитие използва пространство от имена, то може да изглежда така:

$("#myButton").off("click.myNamespace").on("click.myNamespace", function(){
// ....
});

Ако трябва да имате обвързано събитие и само искате да го използвате и след това да го освободите автоматично, можете да го използвате он () като този

$("#myButton").one("click", function(){
// ....
});

Само за да се изясни, че можете да излезете от курса, просто използвайте off() или unbind() сами, без да ги свързват on() или bind()и др. Слово на предпазливост, въпреки че unbind() ако се случи да използвате live() за вашите връзки. Един от многото недостатъци на live() е:

Методът .live () взаимодейства с други методи на събития по начини, които могат да бъде изненадващо, например, $ (document) .unbind ("click") премахва всяко кликване handlers, прикачени с всяко повикване към .live ()!

Допълнителни ресурси

кликнете () - е подобно на свързване
свързване () - предпочитано свързване за статични елементи преди jQuery 1.7
live () (не използвайте) - отхвърлен от 1.7, но не използвайте преди 1.7
делегат () - предпочитано свързване за динамични елементи преди jQuery 1.7
на () - предпочитано свързване за статични / динамични елементи, тъй като jQuery 1.7


0 за отговор № 2

В зависимост от начина, по който обвързвате събитията, ще искате да ги използвате .unbind() или .off() (ако използвате .live() тя е отхвърлена и трябва да преминете към .on())

jQuery има хубава страница Събития с имена което илюстрира как да изключите само операторите на събития, които добавихте.


0 за отговор № 3

Оценявам бързите ви отговори

Използвам .live ()

Намерих най-лесното решение за мен беше да сложа .die () преди всяко изявление .live ()

Пример:

$(".add").die();
$(".add").live(...............

http://api.jquery.com/die/