为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用jQuery将事件附加到动态HTML元素?

如何使用jQuery将事件附加到动态HTML元素?

如何使用jQuery将事件附加到动态HTML元素?假设我有一些jQuery代码,它将事件处理程序附加到具有类的所有元素.myclass。例如:$(function(){     $(".myclass").click( function() {         // do something     });});我的HTML可能如下:<a class="myclass" href="#">test1</a><a class="myclass" href="#">test2</a><a class="myclass" href="#">test3</a>这没有问题。但是,请考虑.myclass在将来某些时间是否将元素写入页面。例如:<a id="anchor1" href="#">create link dynamically</a><script type="text/javascript">$(function(){     $("#anchor1").click( function() {         $("#anchor1").append('<a class="myclass" href="#">test4</a>');     });});</script>在这种情况下,test4链接是在用户单击时创建的a#anchor1。该test4链接没有click()与之关联的处理程序,即使它有class="myclass"。基本上,我想编写click()处理程序一次,并将其应用于页面加载时出现的内容,以及稍后通过AJAX / DHTML引入的内容。知道如何解决这个问题吗?
查看完整描述

4 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

有时这样做(最高投票的答案)并不总是足够的:

$('body').on('click', 'a.myclass', function() {
    // do something});

这可能是一个问题,因为触发了订单事件处理程序。如果你发现自己这样做了,但由于它的处理顺序而导致问题。你总是可以将它包装到一个函数中,当被称为“刷新”监听器时。

例如:

function RefreshSomeEventListener() {
    // Remove handler from existing elements
    $("#wrapper .specific-selector").off(); 

    // Re-add event handler for all matching elements
    $("#wrapper .specific-selector").on("click", function() {
        // Handle event.
    }}

因为它是一个函数,每当我以这种方式设置我的监听器时,我通常会在文档就绪时调用它:

$(document).ready(function() {
    // Other ready commands / code

    // Call our function to setup initial listening
    RefreshSomeEventListener();});

然后,每当您添加一些动态添加的元素时,再次调用该方法:

function SomeMethodThatAddsElement() {
    // Some code / AJAX / whatever.. Adding element dynamically

    // Refresh our listener, so the new element is taken into account
    RefreshSomeEventListener();}

希望这有帮助!

问候,


查看完整回答
反对 回复 2019-05-21
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

如果您要向DOM添加一堆锚点,请查看事件委派。

这是一个简单的例子:

$('#somecontainer').click(function(e) {   
  var $target = $(e.target);   
  if ($target.hasClass("myclass")) {
    // do something
  }});


查看完整回答
反对 回复 2019-05-21
  • 4 回答
  • 0 关注
  • 766 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信