我有以下html:
<li>
<a href="#tab1" data-toggle="tab">Presentation Name</a>
</li>
<li>
<a href="#tab2" data-toggle="tab" class="not-allowed" id="survey_kind">Survey Length</a>
</li>
这里是jquery:
var yolo = $('.not-allowed').first();
yolo.removeClass("not-allowed");
yolo.prev("li").addClass("active");
前两行的javascript正在运行。出于某种原因,我不能让最后一行工作。我试图让第二个li标签让这个类处于活动状态,但是这个类没有被添加到任何地方。
答案 0 :(得分:2)
该链接没有先前的元素。您想获得链接的父:
yolo.parent().addClass("active");
参考:.parent()
<强> jsFiddle example 强>
请注意,您也可以使用.closest('li')
代替.parent()
。
答案 1 :(得分:1)
您希望parent()
不是prev()
。
答案 2 :(得分:0)
.prev()仅查询元素的兄弟节点,而.not-allowed则不查询。要使用.prev(),您需要调用.parent()来获取锚点所在的列表项元素:
yolo.parent().prev("li").addClass("active");
编辑:我是个白痴
答案 3 :(得分:-2)
通过示例看看这个。我想这回答了你的问题:https://api.jquery.com/prev/
<强>标记强>
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li class="third-item">list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>
<强> JQuery的强>
$( "li.third-item" ).prev().css( "background-color", "red" );
我在这里制作了一个JSFiddle:https://jsfiddle.net/ToreanJoel/nq6efza9/