2013-09-30 154 views
1

我有以下问题。在我的页面上,我有例如具有name属性的5个元素。而在文件准备我结合自己的click事件的函数中使用这个选择:jQuery绑定和解除绑定

$('span[name="test"]').bind('click',function(){ // code }); 

这一切工作正常,但在我的页面的底部,我有它加载我的网页上多种元素,相同的按钮名称属性。通常他们的点击事件没有绑定。然后我做到以下几点:

$('span[name="test"]').unbind('click'); 
    $('span[name="test"]').bind('click',function(){ // code }); 

所有这一切工作正常,但我的问题是:有没有绑定不必解除绑定已经那些剩余的元素的方式?

+0

是的;它被称为[事件代表团](http://api.jquery.com/on/#direct-and-delegated-events)。 – Blazemonger

回答

2

最好的会是这个我认为,那么你不必担心,如果元素在那里或没有。

$(document).on('click','span[name="test"]',function(){ // code }); 

jQuery的.on()已于v.1.7加入,并且这个答案使用event delegation

+0

是的,你是对的。你的回答比我的好,因为它与所提供的代码一起工作。我宁愿不将所有事件监听器都附加到文档中,而是将“容纳”不断变化的元素的最低级父代。 – carter

+0

@carter,我们有基本相同的答案。我只是使用'document'玩安全卡,但使用页面加载时出现的父级是个好主意。 – Sergio

2
$('#container').on('click', 'span[name="test"]', function(){});