jQuery - 使用选择器作用域作为函数参数来绑定事件

时间:2011-04-27 14:08:53

标签: jquery-selectors

我将一些点击事件应用于网格中的所有锚点。

我有一些更新网格中的行的ajax。

我不想再将事件应用于整个网格,而是希望只应用于ajax更新的行,所以我将范围传递给bind函数:

function bindEvents(scope)
{
 scope.find("a").click(function() { //do something });
}

function gridLoad()
{
 ..
 bindEvents($);
}

function ajax()
{
 ..
 bindEvents($(tr));
}

我收到错误抱怨对象不支持点击事件。

当代码只是

时,这就是deffo
$("a").click(function() { //do something });

另外,在find之后添加.each没有效果。

这是最好的做法吗?

1 个答案:

答案 0 :(得分:1)

使用.live().delegate(),您无需重新绑定处理程序。它比为每个<a>绑定一个处理程序更有效,因为DOM树上只有一个事件监听器。

  

直播:为现在和未来与当前选择器匹配的所有元素附加处理程序。

     

委托:根据一组特定的根元素,为现在或将来与选择器匹配的所有元素的一个或多个事件附加处理程序。

只需一次,准备好文档,就像这样:

$('#grid-id a').live('click', function ()
{
    // do something
});