最近未处理动态添加的内容

Closest not working on dynamically added content

本文关键字:添加 未处理 动态 最近      更新时间:2024-04-21

我正在尝试在HTML页面中使用.closest()。我有这个HTML:

<body>
  <div class="listcontainer">
    //Content
    <div class="button">Ok</div>
  </div>
</body>

当用户单击".button"时,我会通过ajax调用将此HTML动态添加到上面的HTML中。ajax调用成功后,会将以下html附加到正文:

<div class="listpanel">
    //Content
</div>

所以,我在listcontainer下面有一个listpanel,它们都在体内。现在我使用最接近的作为:

$listpanel = $('.listpanel'); 
$div = $listpanel.closest('.listcontainer');

但不知何故,最接近的是选择html元素,而不是列表容器。我不知道为什么会发生这种事。有人能帮我吗?非常感谢。

编辑:这就是我的Ajax调用的样子:

$('.button').click(function(){
      $.ajax({
            url:"listpanel.html",
            cache: false,
            dataType: "html",
            success:function(data)
            {
                    $('body').append(data);
            }
     });
});

如果您将div.listpanel附加到主体,它不在div.listcontainer内。因此,最接近的人找不到它。您需要搜索兄弟:

var myDiv = $('.listpanel').siblings('.listcontainer').first();

或者将其附加到div.listcontainer中,然后使用closest()方法

.closest遍历祖先DOM树。它不查看兄弟姐妹,也不钻取兄弟姐妹的子树。这是预期的功能。

http://api.jquery.com/?s=closest