Я хотел бы поделиться мыслью, не удаляя все события вместе (просто переопределить их).
Если ваше новое одно связанное событие (здесь мы называем его «щелчок») специфично для элемента, к которому оно привязано, то я считаю, что вы можете игнорировать любые другие события просто с помощью функции stopPropagation(). Так
$("specific-selector").on("click", ".specific-class", function (e) {
e.stopPropagation()
// e.stopImmediatePropagation()
/* your code continues ... */
});
Это остановит всплывающие окна событий, поэтому другие ваши события не будут срабатывать. используйте stopImmediatePropagation(), чтобы предотвратить другие события, прикрепленные к тем же элементам, что и «щелчок».
Например, если событие mouseleave также привязано к элементу $("specific-selector .specific-class"), оно также не сработает.
Наконец, все остальные события не будут срабатывать на этом элементе, а на вашем новом элементе «щелчок».
Нерешенный вопрос: что, если другие события также используют stopPropagation()? ... Тогда я думаю, что побеждает тот, у кого лучшая спецификация, поэтому старайтесь избегать сложных, слишком многих событий - это последнее предложение.
Дополнительные сведения см. в разделе "Прямые и делегированные события" на сайте jQuery.
person
francischan
schedule
31.12.2013