找不到此元素的正确 jQuery 选择器

Can't find the correct jQuery selector for this element

我有重复的 html 块,看起来像这样:

<div class="pod-control">

  <a class="fap-single-track"></a>

    <a class="pod-dl"></a>

    <div class="add-music"><a class="add_mycrate"></a></div>

    <div class="added-music"></div>

</div>

我正在使用 jQuery 从 "a.add_mycrate" class 获取信息,然后用内容做一些 ajax 的事情,一切正常.

但是在响应中我试图显示一个以前隐藏的 div "added-music" 但我似乎找不到正确的选择器。

这是我正在使用的:

var $this = jQuery(this);                  

    jQuery.post(myCrate.ajaxurl, data, function(response) {

        $this.closest('.add-music').remove();

        $this.closest('.pod-control').find('.added-music').show();

        alert(response);
    });

给我带来麻烦的是:

$this.closest('.pod-control').find('.added-music').show();

阅读了一堆帖子后,我知道我需要将选择器移到顶层(从 a.add_mycrate 到 .pod-control),这样我就可以 .find .added-music 但我也知道我做错了,因为无论我尝试什么都不会显示这个 div.

尝试删除 .add-music 在您显示 .added-music 之后。 这意味着:交换警报上方的两行。

我怀疑,由于整个事件都绑定到被删除的 link,它也停止执行绑定到它的代码。

编辑:或者根本不删除()它,而是.hide()它。

问题是由 ul 元素中错误嵌套的标记引起的。有关详细信息,请参阅此 Whosebug Answer

一个可能的解决方案是做这样的事情:

<li class="pod-control">
  <a class="fap-single-track"></a>

  <a class="pod-dl"></a>

  <div class="add-music">
    <a class="add_mycrate"></a>
  </div>

  <div class="added-music"></div>
</li>

这样 li 中的元素都共享一个公共且可识别的父节点 (.pod-control),使它们更容易遍历和定位 JQuery .parent(),[ =15=、.siblings().next().prev() 方法和 :first-child:last-child:nth-child 选择器等