如何针对具有“<a>` class `selected` in it?</a> </li> </span>的`<li>`的`<span>`?

时间:2011-08-09 00:19:42

标签: jquery

<li>
  <a class="selected" href="#">One</a>
  <span class="tab-arrow"></span>
</li>
<li>
  <a href="#">Two</a>
  <span class="tab-arrow"></span>
</li>

span.tab-arrow设置为display:none。我想通过jQuery添加display:block仅当其上方的<a>标记具有selected类时。如何定位<span><li><a>的{​​{1}}?

这样的东西?

selected

5 个答案:

答案 0 :(得分:2)

保持简单:

$('.selected').next().show();

根据您提供的DOM结构,这应该是最快的解决方案,因为JQuery将使用getElementsByClassName()

更复杂的DOM需要更复杂的选择器,但对于这种情况,最广泛的是最快的 - 并且有效。

我使用上述语法平均每秒23,000次操作/秒,而gilly3建议使用$("li > a.selected + span").show();只有13.5k操作/秒

基准:http://jsperf.com/selector-variation

答案 1 :(得分:1)

为什么CSS可以做jQuery:

.selected + .tab-arrow { display:block; }

答案 2 :(得分:0)

使用adjacent sibling selector+):

$("li > a.selected + span").show();

但是你不需要jQuery,只需普通的css就能正常工作:

.tab-arrow
{
    display: none;
}
a.selected + .tab-arrow
{
    display: inline;
}

答案 3 :(得分:0)

或类似$("a.selected").siblings("span").css("display", "block");

答案 4 :(得分:0)

$('a.selected').parent().find('span.tab-arrow').show();