复杂的jquery / css选择器

时间:2014-07-30 14:23:06

标签: jquery-selectors css-selectors

我需要这个代码的选择器:

    <div class="panel-heading BWHeadingForSection">
<a style="text-decoration:none" href="#faq-cat-1-sub-2" data-parent="#accordion-cat-2" data-toggle="collapse" tabindex="90">
<i class="fa fa-truck fa-lg"></i>
  UPS Deutschland
<span class="pull-right">
<i class="glyphicon glyphicon-plus"></i>
</span>
</a>
</div>

我试过了:

 $('div.BWHeadingForSection a[href~="#faq-cat-1-sub-'+globalcarriernumber+'"]').on("click", function(){
                count++;
                if(count%2==0){
                    $("#faq-cat-1-sub-"+globalcarriernumber).slideToggle();

                    //why doesn't this selector work?
                    //if ( $(this+">span i").hasClass('plus') ) {
                    //    $(this+">span i").removeClass('plus').addClass('minus');
                   // }

                   //this selector work's, at least it enters the if -block
                   if ( $('div.BWHeadingForSection a[href~="#faq-cat-1-sub-'+globalcarriernumber+'"]>span i').hasClass('plus') ) {
                    $('div.BWHeadingForSection a[href~="#faq-cat-1-sub-'+globalcarriernumber+'"]>span i').removeClass('glyphicon glyphicon-plus').addClass('glyphicon glyphicon-minus');
                    }
                }else{
                    $("#faq-cat-1-sub-"+globalcarriernumber).hide();
                }
            });

相关行是“$(this +”&gt; span i“)”和/或“$('div.BWHeadingForSection a [href~ =”#faq-cat-1-sub-'+ globalcarriernumber +'“] &gt; span i')“,需要一些调整。我必须用“减号”替换“加号”(“”)。

如果我使用FireBug调试器,我会得到“$('div.BWHeadingForSection a [href~ =”#faq-cat-1-sub-'+ globalcarriernumber +'“]&gt; span i')”,它会去进入那个if-block,但符号仍然是一样的。如果我使用“$(this +”&gt; span i“)”我得到(当我在它上面时):“#faq-cat-1-sub-2”,但它没有进入if-block。 / p>

...谢谢

1 个答案:

答案 0 :(得分:1)

首先,你在这里混合类型。函数$(...)接受对象(DOM节点或jQuery对象)选择器字符串,但不接受两者的串联。

最好尝试$(this).find('span i')

据我所知,在您的代码段中,您将找到的元素包含css类&#39; glyphicon&#39;和&#39; glyphicon-plus&#39;,但没有课程&#39;加&#39;。所以你可能无法删除它。也许你想删除&#39; glyphicon-plus&#39;并添加&#39; glyphicon-minus&#39;?