如果在页面上找不到我绑定jQuery代码的元素会发生什么? 先前的绑定代码是否中断?
让我用样本解释一下。我的页面中有以下代码:
<script type="text/javascript">
$(document).ready(function() {
$('.deleteMemo').live('click', function() {
$.ajax({
[ajax call omitted for brevity]
});
});
$('.markAsViewed').live('click', function() {
$.ajax({
[ajax call omitted for brevity]
});
});
});
</script>
现在,根据页面中的页面状态,可能会出现:
我正在试验,在第一种情况下(仅“deleteMemo”元素),jQuery代码根本不会被调用。我仍然没有尝试过其他情况,但我已经对代码进行了三次检查,甚至用fiddler查看了它。
有什么建议吗?
答案 0 :(得分:1)
调用.live()
时元素是否在页面上并不重要,因为.live()
没有将处理程序绑定到实际元素。
这是使用.live()
的目的。它允许动态添加到页面的元素触发在它们存在之前添加的处理程序。
如果.deleteMemo
的任何祖先(例如)停止发生事件冒泡,那么live()
将不适用于该元素。
因此,如果您有任何祖先的任何点击处理程序:
event.stopPropagation();
或:
return false;
...在其中,live()
处理程序不会触发。
当然,如果选择器不匹配(例如检查大小写),那么处理程序将不会触发。