私はここで助けを見つけたいと思っています、私は立ち往生しています。
この関数を使用して、メニュー内の正確なアクティブなli要素(n番目の子を含む)を取得します。
function getElementPathWithJquery(element) {
return $(element).parents().andSelf().map(function() {
var $this = $(this);
var entry = '';
if(this.nodeName === "BODY" || this.nodeName === "HTML") {
// do nothing
} else {
entry += this.nodeName;
if (this.className) entry += "." + this.className.replace(/ /g, '.');
if (this.id) entry += "#" + this.id;
if ($this.siblings(entry).length > 0) entry += ":nth-child(" + $this.prevAll(entry).length + ")";
}
return entry;
}).get().join(" ");
}
これで、要求されたレベルにあるため、親のli要素はaddClass('active')属性を取得しますが、以下は機能しません。
if( $('#MENU_MAIN').find("ul.menu-level-3>li").hasClass('active')) {
var path = getElementPathWithJquery($('#MENU_MAIN').find("ul.menu-level-3>li.active"));
$(path).parent().parent().css('border','3px solid red');
}
正確なn番目の要素が必要な理由は、メニューシステムがカテゴリシステムであり、1つのエントリが実際にはより多くのカテゴリに属することができるという事実です。次のようなソリューション:
$('#MENU_MAIN').find("ul.menu-level-3>li.active").parent().parent().css('border','3px solid red');
動作しますが、見つかったエントリが属するカテゴリの数によっては、複数の親liに赤い境界線が表示される場合があります。
ご協力いただきありがとうございます!よろしく、ロバート