0

パネルが2つあります。2つのパネルの場合、2つのオープニングボタンがあります。したがって、最初のボタンをクリックすると、最初のパネルが開きます。すべて順調。しかし今、次のパネルを開く必要があるときは、最初にこれを閉じたいと思います。2つのパネルが同時に開かないようにします。それらのために別々のクラスを追加したくはありませんopened。クラスのみを使用したいと思います。これは私のコードとヘルプのためのthxです:

$('.js-sp-closing-button.opened').live('click', function(){
    if($(this).next.next('.js-scrolling-list').hasClass('opened_panel')){
       $(this).removeClass('opened_panel')
    }
});

<span class="top_ticker_small_02 js-sp-closing-button opened">All</span>
<div class="pp_elements js-scrolling-list opened_panel">...</div>
...
<span class="top_ticker_small_02 js-sp-closing-button">All</span>
<div class="pp_elements js-scrolling-list">...</div>
4

4 に答える 4

3

意図的に要素をスキップしていない場合、 .next.next missed the next parenthesis( は .next().next(.You can pass class name to next function instead of having two next function呼び出しになります。

$('.js-sp-closing-button.opened').live('click', function(){
    if($(this).next().next('.js-scrolling-list').hasClass('opened_panel')){
       $(this).removeClass('opened_panel')
    }
});
于 2012-11-15T10:29:33.337 に答える
2

パネルの開閉の問題に関しては、新しいパネルを開く前に、すべてのパネルを閉じてください。何かのようなもの:

$('.js-sp-closing-button.opened').live('click', function(){
    //Close all panels
    $('.js-scrolling-list').removeClass('opened_panel');
    /** Code to open next panel **/
});

また、.nextメソッドです。呼び出すには括弧を使用する必要があります。

$('.js-sp-closing-button.opened').live('click', function(){
    if($(this).next().next('.js-scrolling-list').hasClass('opened_panel')){
       $(this).removeClass('opened_panel')
    }
});

意図によっては、.next() への 2 つの呼び出しが不要になる場合があります。2 つのパネルが兄弟である場合、セレクターを指定する .next() を 1 回呼び出すだけで十分.js-scrolling.listです。

$('.js-sp-closing-button.opened').live('click', function(){
    if($(this).next('.js-scrolling-list').hasClass('opened_panel')){
       $(this).removeClass('opened_panel')
    }
});
于 2012-11-15T10:29:56.013 に答える
1

これを行うだけではるかに簡単です...

$('.js-scrolling-list').live('click', function(){

    $('.js-scrolling-list').removeClass('opened_panel');
    $(this).addClass('opened_panel');

});

例: http://jsfiddle.net/snKM8/2/

于 2012-11-15T10:41:42.310 に答える
0

これが私がなんとか手に入れたものです、仕事は良いです-おそらく誰かが将来恩恵を受けるでしょう. 皆さん、Thx:

$('.js-sp-closing-button').live('click', function(){
    $(this).toggleClass('opened');
    if ($(this).hasClass('opened')){
        $('.js-sp-closing-button').removeClass('opened');
        $(this).addClass('opened');
        $('.js-scrolling-list').removeClass('opened_panel');
        $(this).next('div').addClass('opened_panel');
    } else {
        $('.js-sp-closing-button').removeClass('opened');
        $(this).next('div').removeClass('opened_panel');
        $(this).removeClass('opened');
    }
});
于 2012-11-15T11:15:23.820 に答える