Jquery-使用Live事件绑定每个函数不起作用

时间:2012-02-24 09:39:24

标签: javascript jquery

我有功能

$('table tr:gt(0)').each(function() {
if ($('td:contains("'+ pointName +'")', this).length == 0) $(this).hide();
});

我希望这个函数与live()绑定。

我尝试过这样的事情,但是无法发挥作用。

 $('table tr:gt(0)').live('each', function (){
if ($('td:contains("'+ pointName +'")', this).length == 0) $(this).hide();
 });

正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

你不需要说每一个 - 实际上这是不正确的用法。 live的第一个参数指定事件类型。 changekeyup等等......

live - 就像大多数jQuery方法作用于整个选定集一样。所以你可能想要......

$('table tr:gt(0)').live('click', function (){
    if ($('td:contains("'+ pointName +'")', this).length == 0) $(this).hide();
});

live也可以接受多个事件 - 例如.live('change click keyup', function()...将绑定到所有三个事件。

jQuery.live()

答案 1 :(得分:1)

each()是一种迭代一组元素的方法。 live()用于绑定事件。因此,each()不是一个事件,您不能像live()那样使用它。相反,您应该绑定到clickhover之类的事件,然后使用处理程序中第一个示例中的each()代码。

最后,不推荐使用live()。如果您使用的是旧版本的jQuery,则应使用delegate()代替。

试试这个:

$("#myContainer").delegate('#myButton', 'click', function() {
    $('table tr:gt(0)').each(function() {
        if ($('td:contains("'+ pointName +'")', this).length == 0) {
            $(this).hide();
        }
    });
});