jQuery .live () событие "click" не привязывается при добавлении новых соответствий в DOM - PullRequest
0 голосов
/ 16 сентября 2009

Вот проблема, с которой я столкнулся. У меня есть два события jQuery .live (), оба для событий щелчка. Они инициализируются в начале загрузки страницы; затем они ждут, пока элементы, соответствующие селектору, не появятся и не будут нажаты. Теперь проблема в том, что когда в DOM добавляется элемент, соответствующий селектору, живые события не связаны (или, возможно, нет - они просто не работают вообще. Я убедился, что они даже не также вызывается (установите точку останова внутри функции в Firebug, и когда я щелкнул ссылку, соответствующую селектору, она никогда не запускалась - таким образом, функция даже не вызывается).

Кроме того, не только живые события, которые соответствуют этим конкретным селекторам, испорчены - это КАЖДОЕ живое событие, которое не связано (или что-либо еще происходит), когда добавляются новые элементы.

Кто-нибудь когда-либо имел подобный опыт с живыми событиями в jQuery? ... или нашли решение?

Ответы [ 2 ]

1 голос
/ 01 октября 2009

Одна из возможностей состоит в том, что ваши совпадающие элементы содержатся в элементе, который обрабатывает событие click и останавливает распространение события click.

Например:

<script type="text/javascript">
    $(function() {
        $(".selector").live("click", function() { alert("clicked"); });
    });
</script>
<div onclick="event.stopPropagation();">
    <div class="selector">Click me</div>
</div>

В этом примере нажатие «Click me» не выполнит событие, назначенное методом .live. Это связано с тем, что .live связывает событие на более высоком уровне DOM (см. Комментарий Джоша Пауэлла здесь ), и поэтому, из-за характера всплывающих событий, "event.stopPropagation ();" исполняется до вашего живого события. И поскольку он останавливает распространение, ваше событие живого клика никогда не выполняется.

Альтернативой является использование плагина livequery для jquery, который связывается с каждым соответствующим элементом. (Я пытался предоставить ссылку, но, как новый пользователь, stackoverflow помешал мне опубликовать более одной ссылки)

0 голосов
/ 16 сентября 2009

Пример кода может помочь диагностировать проблему =) Вы уверены, что рассматриваемый элемент совпадает с указанным вами селектором? Потому что поздние добавления в DOM - это именно та проблема, для решения которой была создана live.

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