0

私はここで助けを見つけたいと思っています、私は立ち往生しています。

この関数を使用して、メニュー内の正確なアクティブな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に赤い境界線が表示される場合があります。

ご協力いただきありがとうございます!よろしく、ロバート

4

1 に答える 1

1

parents()すべての要素の祖先を取得するために使用できます。セレクターを使用して結果を制限できます。

于 2012-05-28T08:51:29.197 に答える