Избегайте двойной привязки к событиям DOM (например, с помощью onclick ()) - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть несколько компонентов DOM, с которыми я связываю такие события, как click, hover и т. Д. Поскольку я использую JSF с AJAX, иногда эти компоненты перерисовываются, и мне приходится заново привязывать к ним события DOM.

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

jsf.ajax.addOnEvent(function (data) {
    if (data.status === "success") {
        $("#someid").click(function() {...});
    }
});

Проблема с этим решением состоит в том, что когда компоненты не перерисовываются, а происходит событие AJAX, привязка удваивается и утраивается и т. Д.

Решение, которое всплывает у меня в голове, состоит в том, чтобы иметь флаг для каждого компонента DOM, который установлен в true, когда компонент был связан с событием. Это будет работать, но немного громоздко.

Мне интересно есть ли лучшее решение, о котором я не знаю (или не могу придумать), например какая-то функция jQuery, которая позволяет программисту избегать большего чем одна привязка на событие для каждого компонента DOM.

Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2011

Это именно то, для чего jQuery.live().

РЕДАКТИРОВАТЬ : Как отмечено в комментариях, начиная с jQuery 1.7, правильный метод для использования - jQuery.on()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...