我收到 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)
作品 代替。
我的问题是我不明白为什么原始处理程序会失败。所有链接同时呈现,我将处理程序订阅包装在 a$(document).ready()
中,这应该确保加载 DOM。
我需要弄清楚这一点,因为我有一个更复杂的情况,处理程序在一个缩小的 javascript 文件中注册,所以如果我能理解如何防止这个错误而不是在它发生时修复它,那将非常有帮助。
还要注意的一件事是,我在 Firefox、Chrome 和 IE 中收到了同样的奇怪行为。我正在使用 jQuery1.5.1