如何使用jQuery.live模仿stopPropagation

时间:2010-12-11 01:48:06

标签: ajax jquery

所以我知道使用jQuery.live的一个缺点是.stopPropagation()不可用。但我非常需要它。

这是我的用例。我有一个复选框,当前绑定到一个单击。但是,其他复选框通过AJAX调用显示在屏幕上,这意味着我真的需要.live('click', fn)。不幸的是,该复选框位于另一个可点击元素的顶部,需要.stopPropagation()。这适用于.bind('click', fn),但无法将其与.live()一起使用会妨碍我。使用return false不起作用,因为不会选中复选框。

关于在使用.stopPropagation()时如何模仿.live()而不返回false的任何想法?

1 个答案:

答案 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就是一个展示如何使用它的例子。