所以我知道使用jQuery.live
的一个缺点是.stopPropagation()
不可用。但我非常需要它。
这是我的用例。我有一个复选框,当前绑定到一个单击。但是,其他复选框通过AJAX调用显示在屏幕上,这意味着我真的需要.live('click', fn)
。不幸的是,该复选框位于另一个可点击元素的顶部,需要.stopPropagation()
。这适用于.bind('click', fn)
,但无法将其与.live()
一起使用会妨碍我。使用return false
不起作用,因为不会选中复选框。
关于在使用.stopPropagation()
时如何模仿.live()
而不返回false的任何想法?
答案 0 :(得分:1)
不是将.live
处理程序绑定到复选框,而是将更智能的事件处理程序绑定到容器,其行为依赖于 元素是目标的事件。
$("#container").click(function(e) {
var ele = e.target;
if(ele.tagName.toLowerCase() == 'input'
&& ele.type.toLowerCase() == 'checkbox') {
e.stopPropagation();
// do something special for contained checkboxes
// e.g.:
var val = $(ele).val();
}
});
Here就是一个展示如何使用它的例子。