2017-06-13 12 views
0

jQueryを使用して、ユーザーがクリックするボタンの名前と一致するクラスを持つすべてのdivを選択しようとしています。 は、ここにサンプルHTMLです:このような1つを除くすべてのdivを選択します。

<button name="apples">Apples</button> 
    <button name="oranges">Oranges</button> 
    <button name="bananas">Bananas</button> 

    <div> //This div is also accidentally targeted 
     <div id="apples"> 
      <img src="" alt"" > 
     </div> 
     <div id="oranges"> 
      <img src="" alt"" > 
     </div> 
     <div id="bananas"> 
      <img src="" alt"" > 
     </div> 
    </div> 

は何か:

<script> 
    $("button").click(function() { 
    var name = $(this).attr('name'); 
    $("div:not('#' + name)").toggle(); 
    // This works, but it obviously also targets other divs on the page. 
    }); 
    </script> 

私は組み合わせてなど、最も近い、親、クラスを使用しますが、子供など、より複雑なセレクタで苦労しているように見えるしようと考えましたnotセレクタを使用します。私は " - div:not" "> imgと他の多くの組み合わせを試しました。私は何をすべきか?私がやるだろう

+1

あなたが作業したいもののクラスを使用しています.... – epascarello

+0

divでクラスを選択してIDを逃したセレクタを書く方法を教えてください。私は以前これを試しましたが、間違ったセレクタを書きました。 divでクラスを選択し、idを含まないdivを分離する必要がありますか? – DavidG

+0

文字列の折り返し.... '' div:not( '#' + name) ''は文字通り同じままです。 '' name "'は変数 'name'の値になり、 "div:not(#" + name + ")" 'jsはあなたが使っている引用符の種類を気にしませんが、一度使うと文字列を分割する必要があります。 – Kaiido

答えて

2

まず最初は、あなたが

$('.target').not('#' + name).toggle() 
をしたい要素を一致させるために、そして、あなたがターゲットにしたい要素、すなわち

<div class="target" id="apples"> 
    <img src="" alt"" > 
</div> 

を識別するためにクラスを使用notフィルタと、そのクラスを組み合わせることです

+0

それはそうしました。ありがとう。 – DavidG

関連する問題