jquery on () вместо bind () и live () - PullRequest
2 голосов
/ 22 февраля 2012

Мне нужно обрабатывать события для статических и динамически создаваемых элементов. Решение для статических созданных элементов:

$(".js-tag-close").on("click", function ()
{
   $(this).parent().remove();
});

для динамически созданного:

$(".custom-tags-selector").on("click", ".js-tag-close", function ()
{
    $(this).parent().remove();
});

Как я могу обрабатывать оба случая в одном on ()?

Заранее спасибо ...

1 Ответ

5 голосов
/ 22 февраля 2012

Второй способ будет работать как для статических, так и для динамических элементов.

Почему?

Поскольку вы делегируете выполнение обработчика события в контейнер .custom-tags-selector. Обработчик будет выполняться до тех пор, пока щелкает любой потомок, для которого указанный селектор .js-tag-close действителен, независимо от того, существует он или добавлен динамически.

Единственным условием является то, что контейнер, которому вы делегируете, существует в DOM, когда ваш код выполняется.

DEMO

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