2 Stimmen

WordPress jQuery Toggle basierend auf Kategorie

Ich habe das folgende Nav:

<li id="categories">
    <ul>
        <li class="cat-item cat-item-8 current-cat"><a href="#">Link</a>
            <ul>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
            </ul>
        </li>
        <li class="cat-item cat-item-10"><a href="#">Link</a>
            <ul>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a></li>
                <li class="cat-item"><a href="#">Link</a>
                    <ul>
                        <li class="cat-item"><a href="#">Link</a></li>
                        <li class="cat-item"><a href="#">Link</a></li>
                        <li class="cat-item"><a href="#">Link</a></li>
                        <li class="cat-item"><a href="#">Link</a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</li>

und das folgende JS:

jQuery("#categories li.cat-item").each(function(){
    var item = jQuery("<span>").addClass('plus'),
        that = jQuery(this);

    if ( that.has("ul").length ) {   
        item.click(function(e){
            var self = jQuery(this);
            self.text( self.text() === "+" ? "-" : "+" )
                .parent().next().toggle();
            e.preventDefault();
        }).text('+');

        that.find(".children").hide();
    }

    that.children("a").prepend( item );
});

So entsteht ein schönes Umschaltmenü für meine Kategorien.

Ich möchte jedoch, dass je nachdem, welche Kategorie gerade angezeigt wird, das entsprechende Menü geöffnet wird, wenn der Benutzer auf der Seite landet. Dies muss sowohl für Beiträge als auch für Kategorien funktionieren.

Danke.

0voto

Felix Kling Punkte 751464

Fügen Sie dies einfach nach Ihrem Code ein:

jQuery('#categories .current-cat span.plus:first').click();

die einen Klick auf die erste Seite simuliert plus Zeichen in der aktuellen Kategorie.

Wenn Sie den gesamten Baum aufklappen möchten, lassen Sie einfach die :first :

jQuery('#categories .current-cat span.plus').click();

Btw das Menü nicht kollabieren, wie ich es versucht, musste ich Ihren Code zu ändern that.children("ul").hide();

Aktualisierung:

Si .current-cat ist auf einer li Element in einem Teilbaum, können Sie dies tun:

jQuery('#categories .current-cat').parents('li:not(#categories)')
                                  .andSelf()
                                  .find('span.plus:first').click();

So findet jedes Elternteil li enthält die aktuelle li ( andSelf() (falls es wieder eine Wurzel eines Teilbaums ist) und klickt auf die erste + Zeichen in jedem von ihnen.

0voto

Todd Punkte 1676

Wordpress soll den Kategorienamen in eine ID eines übergeordneten Containers einfügen (z. B. in den BODY Tag) und schreiben Sie dann das CSS für jedes Kategorie/ID-Paar, das das entsprechende Menü öffnet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X