【问题标题】:jQuery $(this).remove() not working after appendjQuery $(this).remove() 在追加后不起作用
【发布时间】:2012-03-28 18:26:42
【问题描述】:

我有一个带有 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>');

在这些添加的链接上不会调用删除超链接(点击时)的功能。如何解决?

【问题讨论】:

    标签: jquery append


    【解决方案1】:

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

    【讨论】:

    • 注意 live() 自 1.7 起已贬值。从现在开始建议使用on()。翻译后的调用将是 $(document).on('click', '.tags a', function () { /* foo */ });
    • 是的,...对于 jquery 中的最新版本,您必须使用 ON 方法
    【解决方案2】:

    你必须使用直播功能:

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

    因为您是在初始加载后添加链接,所以标准点击事件不会绑定到动态添加的链接。

    【讨论】:

    • 注意 live() 自 1.7 起已贬值。从现在开始建议使用on()。翻译后的电话是$(document).on('click', '.tags a', function () { /* foo */ });
    • 谢谢。我应该在所有点击/类似操作中使用它还是仅在真正需要时使用它?
    • 对于性能,看这个答案:stackoverflow.com/questions/6047193/liveclick-and-performance我个人更喜欢使用点击事件,只有在我真的需要时才使用实时事件,因为很明显会有动态添加元素。
    猜你喜欢
    • 2014-07-22
    • 2011-11-10
    • 2014-04-15
    • 2014-01-05
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多