76173


初心者です．すみませんが、セレクタの書き方教えてください．

[code]

        <article id="manual-index" class="terms">
             <div class="manual-content-wrapper">
                <ul class="colwrap manual-index-layout-terms-nav flex-left">
                   <li class="manual-button-design-01 active" data-target="terms_304D">か</li>
                   <li class="manual-button-design-01" data-target="terms_3081">ま</li>
                   <li class="manual-button-design-01" data-target="terms_308F">わ</li>
                   <li class="manual-button-design-01" data-target="terms_0023004E0055004D0045005200490043">英</li>
                </ul>
    
[/code]

というHTMLで、

  * @id="manual-index"の子孫
  * @classが"manual-button-design-01"と"active"の両方を持つ

要素を選択するセレクタってどう書けば良いのでしょうか？

`$("#manual-index .manual-button-design-01.active")`
で良いのかな？と思ったんですが、@classに`active`が存在しない場合、つまり初期状態でもデバッガで追うと

[code]

        let active_tab = $("#manual-index .manual-button-design-01.active");
        console.dir(active_tab);
        let init = (active_tab[0])?false:true;
    
[/code]

で要素が選択されてしまうつまり`init`がfalseになるようです．

間違っている点ありましたらご指摘ください．

以上 よろしくお願いいたします．


CC BY-SA 4.0
2021-05-28T17:26:34.267
76161
2021-05-29T05:32:04.530
9503
question
jquery
JQueryのセレクタの書き方


.activeクラスを持っている場合に `init` がtrueにしたいという理解で記述します

Javascriptとは [] をBooleanで評価すると `true` を返却します

[code]

    !![] // => true
    
[/code]

このため以下のコードは必ず false を返却します

[code]

    let init = (active_tab[0]) ? false : true;
    
[/code]

jQueryのセレクタは対象がない場合は空配列を返却するため以下のようにすると良いと思います

[code]

    let init = (active_tab.length === 0) ? false : true;
    
    
[/code]

セレクタの記述はその書き方で問題ないと思います


CC BY-SA 4.0
2021-05-29T05:32:04.530
76173
2021-05-29T05:32:04.530
298
76161
answer