2012-03-12 130 views
9

后不工作我有一个与class="tags"的div与一个预定义的超链接。

<div class="tags"> 
    <a href="#">myLink</a> 
</div> 

而我有功能删除该超链接,如果用户点击它。

$('.tags a').click(function() { 
    $(this).remove(); 
    return false; 
}); 

这可以使用预定义的超链接。 如果我添加使用jQuery的帮助(在页面加载后)

$('.tags').append('<a href="#">newLink</a>'); 

功能的另一个链接删除超链接(点击上)将不会被这些所谓的,添加链接。如何解决这个问题?

回答

4

你必须使用实时功能:

$(".tags a").live("click", function() { 
    // ... 
}); 

因为您要添加的初始加载后的链接,该标准的click事件将不会被绑定到动态添加的链接。

+19

**注意** ['live()'](http://api.jquery.com/live)从1.7开始折旧。从现在起使用['on()'](http://api.jquery.com/on)是明智的。翻译的调用将是'$(document).on('click','.tags a',function(){/ * foo * /});' – Matt 2012-03-12 10:51:02

+0

谢谢。我是否应该在所有点击/类似操作中使用它,或者只在真正需要时才使用它? – svenkapudija 2012-03-12 10:51:07

+1

对于性能,看看这个答案: http://stackoverflow.com/questions/6047193/liveclick-and-performance 我个人更喜欢使用点击事件,只使用现场活动,如果我真的需要它,因为很明显会有动态添加元素。 – kufi 2012-03-12 10:54:28

0

您的点击事件只附加到当前dom元素而不是将来的元素。如果您想将此事件添加到所有元素包含未来,那么您必须在jquery中使用实时事件。 http://jsfiddle.net/6cGvt/

+5

**请注意** [live()'](http://api.jquery.com/live)自1.7开始折旧。从现在起使用['on()'](http://api.jquery.com/on)是明智的。翻译的调用将是'$(document).on('click','.tags a',function(){/ * foo * /});' – Matt 2012-03-12 10:53:59

+0

是的,...对于jQuery中的最新版本。使用ON方法 – sandeep 2012-03-12 10:55:01