Ajax 如何使用jQuery.live模拟stopPropagation
所以我知道使用Ajax 如何使用jQuery.live模拟stopPropagation,ajax,jquery,Ajax,Jquery,所以我知道使用jQuery.live的一个缺点是.stopPropagation()不可用。但是我非常需要它 这是我的用例。我有一个复选框,它当前绑定到单击。但是,其他复选框通过AJAX调用显示在屏幕上,这意味着我确实需要.live('click',fn)。不幸的是,该复选框位于另一个可单击元素的顶部,需要.stopPropagation()。这在.bind('click',fn)上运行良好,但无法在.live()上使用它妨碍了我。使用返回false不起作用,因为复选框将不被选中 关于如何在使用
jQuery.live
的一个缺点是.stopPropagation()
不可用。但是我非常需要它
这是我的用例。我有一个复选框,它当前绑定到单击。但是,其他复选框通过AJAX调用显示在屏幕上,这意味着我确实需要.live('click',fn)
。不幸的是,该复选框位于另一个可单击元素的顶部,需要.stopPropagation()
。这在.bind('click',fn)
上运行良好,但无法在.live()
上使用它妨碍了我。使用返回false
不起作用,因为复选框将不被选中
关于如何在使用
.live()
时模拟.stopPropagation()
而不返回false的想法?与其将.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();
}
});
这是一个演示如何使用的示例。与其将
.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();
}
});
这是一个说明如何使用它的示例。我不确定这是否有效。查看我的更新,了解我的意思:。我正在使用
jQuery.live()
添加一个复选框,并将您的ID更改为类,这样我就可以使用两个。单击复选框不允许调用e.stopPropagation
。@Josh-在未被ajax调用替换的外部容器上使用bind
。看,我不确定这是否有效。查看我的更新,了解我的意思:。我正在使用jQuery.live()
添加一个复选框,并将您的ID更改为类,这样我就可以使用两个。单击复选框不允许调用e.stopPropagation
。@Josh-在未被ajax调用替换的外部容器上使用bind
。看见