2012-07-29 59 views
2
<div class="testClass"> 
    <div> 
     <select name="specialName123"> 
     </select> 
    </div> 
</div> 

<div class="testClass"> 
    <div> 
     <span id="someSpan"> 
      <select name="specialName123"> 
      </select> 
     </span> 
    </div> 
</div> 

如何根據他們具有類「testClass」並選擇具有「123」的選擇在頁面上選擇上述兩個div 「它的名字?遞歸地搜索某個類別的所有div的子元素

我知道我可以找到所有選擇像這樣$('select[name*="123"]'),我可以使用$(".testClass")來選擇適當的div。但是,我如何以我需要的方式將它們放在一起?

回答

2

您可以使用closest方法:

$('select[name*="123"]').closest('.testClass') 

DEMO

或:

$('.testClass').has("select[name*=123]") 

DEMO

+0

完美!非常感謝。 – 2012-07-29 14:44:30

+0

@DeeMac不客氣。 – undefined 2012-07-29 14:55:20

1

爲什麼不:

$('.testClass select[name*="123"]') 

它maches的TestClass(任意深度),這是一個選擇框包含123

+0

我不認爲這會選擇實際的div,但它呢? – 2012-07-29 14:47:17

+1

不,它不。他認爲我也是這麼做的。 – 2012-07-29 15:01:27

+0

注意到它會選擇select元素而不是div – 2012-07-29 15:41:10

0

您還可以使用find方法得到的testClass所有後代,然後你就可以過濾名稱的任何兒童由選擇器:

$('.testClass').find('select[name*="123"]');

+1

類似於OptimusCrime的建議 - 這不只是選擇選擇?我想選擇整個div。 – 2012-07-29 14:49:24

+0

我明白了,我誤解了你的問題。你是正確的 - 這將只是選擇選擇。 – 2012-07-29 14:56:07

+0

非常感謝,無論如何,我從你的文章中學到了一些東西,我將會銘記未來。 – 2012-07-29 15:05:07