2017-06-13 52 views
0

我試圖使用jQuery來選擇除了匹配用戶點擊的按鈕名稱的類以外的所有div。 這裏的樣本HTML:選擇除一個以外的所有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> 

我想過嘗試使用類,但似乎更復雜的選擇,如兒童,家長,最接近等組合掙扎與非選擇器。我試過--div:不是「」> img--和其他許多組合。我該怎麼辦?

+1

在你想使用的類上使用一個類.... – epascarello

+0

我該如何編寫用於選擇類的選擇器,但缺少id?我以前嘗試過,但是我猜寫錯了。我應該選擇類與div然後隔離那些不包含id? – DavidG

+0

字符串包裝....'「div:not('#'+ name)」'會保持不變,你想要的是''name''變成變量'name'的值,然後做' 「div:not(#」+ name +「)」'js不關心你使用哪種引號,但是一旦你使用了一個引號,就需要使用相同的字符來打破字符串。 – Kaiido

回答

2

我做的第一件事是用一個類來確定您要定位的元素,即

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

然後,結合該類具有not過濾器,以適應所要

$('.target').not('#' + name).toggle() 
元素
+0

這樣做。謝謝。 – DavidG

相關問題