![](/img/trans.png)
[英]how do i add an active class on the parent li when i select an item on it. using javascript
[英]How do I add active class to parent of li that i selected?
$(function() {
var pgurl = window.location.href.substr(window.location.href
.lastIndexOf("/") + 1);
$("#nav ul ul li a").each(function() {
if ($(this).attr("href") == pgurl || $(this).attr("href") == '')
$(this).closest('li').addClass('active');
});
});
這是我正在使用的js
<div id="nav">
<ul>
<li class="headerFont"><a href="index.jsp"><b>HOME</b></a></li>
<li class="headerFont"><a href="link.jsp"><b>HOW TO
DONATE</b></a></li>
<li class="headerFont"><a href="#"><b>DONATE</b></a> <----- AND THIS SINCE SHOULD
<ul> ALSO BE ACTIVE
<li class="headerFont"><a href="link2.jsp"><b>DONATION <----- IF I SELECT THIS
CENTER <img id="arrow" src="img/arrow.png" /> IT SHOULD BE ACTIVE
</b></a></li>
<li class="headerFont"><a href="link3.jsp"><b>HOW ELSE
CAN I DONATE? <img id="arrow" src="img/arrow.png" />
</b></a></li>
</ul>
</li>
</ul>
</div>
當我選擇li而沒有sub-li時,效果很好。 但是當我選擇另一個li內的li時,它將使子li成為活動對象,而不是父對象。 例如,如果我也想使父對象處於活動狀態,則選擇“捐贈”中的“捐贈中心”。 我應該添加或更改什么以使“ Donate” li也處於活動狀態?
您是否嘗試過使用兒童方法? 可能對您有用。
我將為此更改您的代碼:
$("#nav ul ul").children("li").each(function() {
if ($(this).find("a").attr("href") == pgurl || $(this).find("a").attr("href") == '')
$(this).addClass('active');
});
幾乎可以想象到的每個嵌套元素交互都有一個Jquery方法...
在您的情況下,最合適的是jQuery的.parentsUntil() 。
顧名思義,它將選擇每個父級,直到滿足選擇器條件為止。 作為可選的第二個參數,您可以過濾結果,將選擇范圍縮小到所需的元素類型。
因此,您將獲得以下內容:
$(this).parentsUntil("#nav > ul", "li").addClass("active");
這將以每個父級li
目標,直到它達到最高ul
。
嘗試:
$(“#nav”)。on(“ click”,“ li”,function(){$(this).addClass('active');});
這將活動類添加到li
點擊和li
父。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.