0

私が尋ねた以前の質問は、実際には最も明確な質問方法ではないことに気付いたので、単純化して詳細を追加しようとしています。

マルチレベルのメニューがあります - HTML

    <nav id="site-navigation" class="main-navigation" role="navigation">

<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false">Menu</button>            
<div class="partial-refreshable-nav-menu partial-refreshable-nav-menu-1 menu-all-pages-container">
<ul id="primary-menu" class="nav-menu" aria-expanded="false">
    <li id="1636" class="menu-item">
        <a href="http://wpthemetestdata.wordpress.com/">Home</a></li>
    <li id="1637" class="menu-item">
        <a href="http://localhost/frytest/blog/">Blog</a></li>
    <li id="1638" class="menu-item">
        <a href="http://localhost/frytest/front-page/">Front Page</a></li>
    <li id="1639" class="menu-item" aria-haspopup="true">
        <a href="http://localhost/frytest/about/">About The Tests</a>
        <button class="dropdown-toggle" aria-expanded="true">
            <span class="screen-reader-text">expand child menu</span>
        </button>
        <ul class="sub-menu">
            <li id="1697" class="menu-item">
            <a href="http://localhost/frytest/about/page-image-alignment/">Page Image Alignment</a></li>
            <li id="1698" class="menu-item">
            <a href="http://localhost/frytest/about/page-markup-and-formatting/">Page Markup And Formatting</a></li>
            <li id="1640" class="menu-item">
            <a href="http://localhost/frytest/about/clearing-floats/">Clearing Floats</a></li>
            <li id="1641" class="menu-item">
            <a href="http://localhost/frytest/about/page-with-comments/">Page with comments</a></li>
            <li id="1642" class="menu-item">
            <a href="http://localhost/frytest/about/page-with-comments-disabled/">Page with comments disabled</a></li>
        </ul>
    </li>
    <li id="1643" class="menu-item" aria-haspopup="true">
        <a href="http://localhost/frytest/level-1/">Level 1</a>
        <button class="dropdown-toggle" aria-expanded="true">
            <span class="screen-reader-text">expand child menu</span>
        </button>
        <ul class="sub-menu">
            <li id="1644" class="menu-item" aria-haspopup="true">
                <a href="http://localhost/frytest/level-1/level-2/">Level 2</a>
                <button class="dropdown-toggle" aria-expanded="true">
                    <span class="screen-reader-text">expand child menu</span>
                </button>
                <ul class="sub-menu">
                    <li id="1645" class="menu-item">
                    <a href="http://localhost/frytest/level-1/level-2/level-3/">Level 3</a></li>
                    <li id="1699" class="menu-item">
                    <a href="http://localhost/frytest/level-1/level-2/level-3a/">Level 3a</a></li>
                    <li id="1700" class="menu-item">
                    <a href="http://localhost/frytest/level-1/level-2/level-3b/">Level 3b</a></li>
                </ul>
            </li>
            <li id="1701" class="menu-item">
            <a href="http://localhost/frytest/level-1/level-2a/">Level 2a</a></li>
            <li id="1702" class="menu-item">
            <a href="http://localhost/frytest/level-1/level-2b/">Level 2b</a></li>
        </ul>
    </li>
    <li id="1646" class="menu-item">
        <a href="http://localhost/frytest/lorem-ipsum/">Lorem Ipsum</a></li>
    <li id="1703" class="menu-item">
        <a href="http://localhost/frytest/page-a/">Page A</a></li>
    <li id="1704" class="menu-item">
        <a href="http://localhost/frytest/page-b/">Page B</a></li>
</ul>
</div>  
</nav>

サブメニューが添付された各要素には、添付された要素を開閉するトグルとして機能するボタンがあります。私はメニューの機能をプログラムしようとしてきましたが、問題が発生しました。ドロップダウン トグルをクリックすると、次の JavaScript が実行されます。

container.find( '.dropdown-toggle' ).click( 
     function( e ){

    var _this = $( this );
    e.preventDefault();


    $('.dropdown-toggle.toggle-on').toggleClass('toggle-on');
    $('.sub-menu.toggled-on').toggleClass('toggled-on');

    _this.parents('.sub-menu').toggleClass('toggled-on');
    //This is the line that doesnt run
    _this.parents('.dropdown-toggle').toggleClass('toggle-on');

    //toggles the chevron clicked to go on
    _this.toggleClass( 'toggle-on' );
    _this.next( '.children, .sub-menu' ).toggleClass( 'toggled-on' );
    //Below has no effect of expansion
    _this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); 

    _this.html( _this.html() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand );
    } 
    );

機能していない行は、

 _this.parents(".dropdown-toggle").toggleClass("toggle-on")

その上の行は機能しますが、これは機能しません。<ul>ボタンがクリックされたボタンの上に階層的にある間、上の行で選択されるタグと 同じレベルにあるため、親としてカウントされないためだと思います。

クリックしたボタンのすぐ上にあるすべてのボタンのクラスを切り替えるにはどうすればよいですか?

4

1 に答える 1

0

1 つの方法は、ボタン セレクターで 2 回上昇してから 1 回下降することです。

次のようになると思います。

_this.parent().parent().children('button')

于 2016-03-15T11:17:46.453 に答える