2017-06-13 51 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

相关问题