3

我有以下内容:

$('#menu a[href^="/C"], #menu a[href^="/Test"], #menu a[href^="/T"]')
        .live('click', function (event) {
.....
.....
        });

它查看每个菜单地址链接,然后为每个链接添加一个功能。然而......标记的功能大约有二十行长,我有多达一百个地址链接。

当以这种方式编码时,这是否意味着所有这二十行都添加到一百个链接中的每一个?我应该将其更改为使用命名函数还是使用系统生成的名称创建的匿名函数而不是在每个链接内部存储?

4

1 回答 1

4

您正在使用事件委托,因此事件仅绑定到document. 所以,不,这二十行只绑定在一个地方。

请使用delegate方法或on方法,.live在较新版本的jQuery中被贬低并且效率低下。

$("#menu").delegate('a[href^="/C"], a[href^="/Test"], a[href^="/T"]','click',function(){...});

或者

$("#menu").on('click','a[href^="/C"], a[href^="/Test"], a[href^="/T"]',function(){...});

如果您使用的是非常旧版本的 jQuery 并且必须使用.live,请尝试使用此语法,它对您的用例更有效,但必须在 $(document).ready() 内

$('a[href^="/C"], a[href^="/Test"], a[href^="/T"]','#menu').live('click',function(){...});
于 2012-05-23T15:09:46.197 回答