1. ホーム
  2. javascript

jQueryの:notとhasClass()を使って、classのない特定の要素を取得する方法

2023-09-29 17:56:57

質問

私はこのコードの行を持っています。

$('#sitesAccordion .groupOfSites').click(function() {
    var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');
    console.log(lastOpenSite);
});

私は他の要素の1つを得る代わりに、"false"を得ます(1つがあると仮定して - そして、あるに違いない)。私は、問題があると思います。

.hasClass(':not(.closedTab)');

何が問題なのでしょうか?

私の目的は、(jQuery UIを使用せずに)独自のアコーディオンを作成することです。

で、このように書こうとしています。

$('#sitesAccordion .groupOfSites').click(function() {

    //Get the last opened tab
    var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');

    //Close last opened tab and add class
    lastOpenSite.hide().toggleClass('closedTab');

    //Open the current Tab
    $(this).children('.accordionContent').toggle('fast');

    // remove class from open tab
    $(this).toggleClass('closedTab');


});

これがベストな方法でしょうか? ありがとうございます。 Alon

どのように解決するのですか?

この場合 not 関数を使います。

var lastOpenSite = $(this).siblings().not('.closedTab');

hasClass は、要素がクラスを持っているかどうかをテストするだけです。 not は提供されたセレクタにマッチする選択されたセットから要素を削除します。