我应该在单个或单独的调用中在$(document)上设置多个元素绑定吗?

时间:2012-11-18 14:25:28

标签: javascript jquery-mobile jquery

我正在尝试清理并改进一些代码。有一个相当大的代码片段可以将多个事件附加到$(document),如下所示:

$(document).on('eventA.nameA', '#pageA', function(){
    // do sth
});

$(document).on('eventB.nameB', '#pageB', function(){
    // do sth
});

$(document).on('eventC.nameC', '#pageC', function(){
    // do sth
});

所以基本上所有的事件绑定都直接在文档上。

问题:

是否有限制(我发现了大约50个单独的文档绑定)以及在单个选择器上设置它的优点/缺点是这样的:

$(document)
    .on('eventA.nameA', '#pageA', function(){
        // do sth
    })
    .on('eventB.nameB', '#pageB', function(){
        // do sth
    })
    .on('eventC.nameC', '#pageC', function(){
        // do sth
    });

大多数绑定都是特定于页面的(它是一个Jquery Mobile应用程序,因此一旦将页面拉入DOM,其绑定就会像这样设置)。因此,实际上没有其他地方可以放置这些绑定,因为在$(document)持续时会被拉入和拉出。

感谢您的投入!

1 个答案:

答案 0 :(得分:2)

将它们放在单个选择器上的优点是每次都避免调用$(document)(开销较小,因为$(document)被缓存)。缺点是它们都必须一个接一个,然后再将它们缩进一个级别。这不是很重要。

重要的是,如果它们接近真正的选择器,使用document上的ID选择器授权可能真的很浪费。只需等到文档准备就绪,或者在元素更新时更新事件处理程序 - 特别是如果所有这些元素实际上不会同时存在于同一页面上。如果选择器实际上比这更复杂,请忽略这一段: - )