2015-10-07 98 views
2

我得到了這個jQuery腳本,應該將類「活動」添加到我的李,但它不。該腳本如下:jQuery腳本不會添加活動類

jQuery(function() { 
var pgurl = jQuery(location).attr('href'); 
console.log(pgurl); 
jQuery("ul.pagesubmenu-ul li a").each(function(){ 
     if(jQuery(this).attr("href") == pgurl) 
     jQuery(this).parent().addClass("active"); 
}) 

});

我真的不知道它爲什麼不工作。我試圖在this page上使用它(在主導航下面的subnav中)。

提前致謝!的

+0

確定'href'屬性也有類似的網址作爲'location'對象,通常href標籤不包含域名(相對路徑) –

+0

首先,檢查if條件是否會被執行。檢查在調試或添加警報,如果條件,以確保代碼jQuery(this).parent()。addClass(「active」);被執行 –

回答

1

它沒有得到任何這些鏈接上的完全匹配。 pgurl顯示http://xn--fnpark-pua9l.dk/konference-ny/,但<a>標籤沒有結尾斜槓(http://xn--fnpark-pua9l.dk/konference-ny)。在比較字符串之前嘗試清理網址。這裏是一個線程,可以讓你這麼做:https://stackoverflow.com/a/2541083/5169684

+0

這很有道理!非常感謝您的回覆!我會把這個標記爲正確的,因爲這是它不工作的原因:) – bjarkof

+1

我很高興我能幫上忙。我建議你檢查一下其他的答案。所提及的方法可能會使您的代碼在長期內更具可讀性。 –

+1

我要使用建議的taxicala方法。方式更清潔,比我自己的代碼更好! :) – bjarkof

4

,而不是循環所有的鏈接,就可以直接使用jQuery通過其href屬性中選擇:

$(function() { 
    $("a[href='" + location.href + "']").parent().addClass('active'); 
}); 

注意location.href將返回完整的URL,與主機和方案,如果您使用的是相對URL在您的網站:

$(function() { 
    $("a[href='" + location.pathname + "']").parent().addClass('active'); 
}); 

此外,您還可以使用一些字符作爲通配符:

= is exactly equal 
!= not equal 
^= starts with 
$= ends with 
*= contains 
~= contains word 
|= starts with prefix 
+0

這不是正則表達式嗎?網址可能包含搜索路徑(/ link?q = test)。無論如何,你已經得到了我的+1, –

+0

謝謝!我想正則表達式可以工作,但它不是我的強:) – taxicala

+0

@taxicala - 感謝您的回覆!我只是嘗試使用你的腳本,但我得到一個錯誤:無法識別的表達式:a [href = http://xn--fnpark-pua9l.dk/konference-ny/] – bjarkof

0

爲什麼不工作?你可以做的jsfiddle與您的導航結構......

HTML

<ul class="page"> <li><a href="1">Link</a> <ul class="subpage"> <li><a href="#">Sub Link</a></li> <li><a href="#">Sub Link</a></li> <li><a href="#">Sub Link</a></li> </ul> </li> <li><a href="2">Link</a></li> <li><a href="3">Link</a></li> <li><a href="4">Link</a></li> <li><a href="5">Link</a></li> </ul>

JQUERY

jQuery(function() { $("ul.page li ul.subpage li a").each(function(){ $(this).addClass('active'); }); });

https://jsfiddle.net/xp315ydq/