Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 如何使用jQuery.live模拟stopPropagation_Ajax_Jquery - Fatal编程技术网

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
。看见