无法为此元素找到正确的jQuery选择器

时间:2016-01-24 20:43:27

标签: javascript jquery jquery-selectors

我有重复的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从&#34; a.add_mycrate&#34;获取信息。类,然后用内容做一些ajax的东西,这一切都很好。

但是我正在尝试的回应。显示一个先前的.hidden div&#34;添加音乐&#34;我似乎无法为它找到正确的选择器。

这就是我正在使用的:

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。添加音乐但是我也知道我&# 39;我做错了,因为无论我试图赢得什么都没有显示这个div。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

问题是由 INSERT INTO post (post_id, username, post) VALUES (15, 'jim', 'not much'); 元素中嵌套严重的标记引起的。有关详细信息,请参阅此Stackoverflow Answer

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

ul

这样,<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),使得它们更容易遍历并使用JQuery .pod-control.parent(),{ {1}},.children().siblings()方法和.next().prev():first-child选择器等。