Я получаю неожиданное поведение с помощью обработчика событий jQuery.Это очень похоже на проблему, обсуждаемую в этом вопросе: Почему мой обработчик событий jQuery не работает при подключении к нескольким элементам? .
По сути, упрощенный пример - моя страница вызывает
$(document).ready(function(){
$('a.submit').click(function(e){
e.preventDefault();
alert(this.href);
});
});
Предположим, что разметка:
<html>
<body>
<a href="url1" class="submit">text1</a>
<a href="url2" class="submit">text2</a>
<a href="url3" class="submit">text3</a>
</body>
</html>
Все ссылки с классом отправки, кроме последней, вызывают событие.Последняя ссылка с .submit
на странице не связана с обработчиком событий.Замена click(fn)
на live('click',fn)
работает.
Моя проблема в том, что я не понимаю, почему происходит сбой исходного обработчика.Все ссылки отображаются одновременно, и я упаковываю свою подписку обработчика в $(document).ready()
, что должно обеспечить загрузку DOM.
Мне нужно разобраться с этим, потому что у меня более сложная ситуация, когда обработчики регистрируются глубоко внутри уменьшенного файла javascript, поэтому было бы очень полезно, если бы я мог понять, как предотвратить эту ошибку вместо исправленияэто когда это происходит.
Еще одна вещь, на которую стоит обратить внимание: я получаю то же странное поведение в Firefox, Chrome и IE.Я использую jQuery1.5.1