2014-02-23 40 views
0

我知道我很接近,但需要提示!我試圖從包含其他元素的某些類元素中選擇數據,這些元素是基於特定父類是否在類名中包含標籤。Jquery選擇沒有課程的孩子,比如

<div class=something_1> 
<div class=other> 
<div class=other> 
<div class=other_TEMPLATE_1> 
<div class=other> 
<div class=selected_thing>I DO NOT WANT THIS</div> 
</div> 
</div> 
</div> 
</div> 
</div> 

<div class=something_2> 
<div class=other> 
<div class=other> 
<div class=other_TEMPLATE_2> 
<div class=other> 
<div class=selected_thing>I DO NOT WANT THIS</div> 
</div> 
</div> 
</div> 
</div> 
</div> 

<div class=something_3> 
<div class=other> 
<div class=other> 
<div class=other> 
<div class=other> 
<div class=selected_thing>I WANT THIS</div> 
</div> 
</div> 
</div> 
</div> 
</div> 

<script> 

$("[class^=something]").each(function(){ 

selectedThing = $(this).children().children().children(":not[class^=other_TEMPLATE]").children().children(".selected_thing").html(); 

console.log(selectedThing); 

}); 

</script> 

正如你所看到的部分挑戰是一些類名可以稍微改變,但我想忽略那些模板出現的地方。

回答

2

您可以使用此:

$('.selected_thing').each(function(){ 
    if($(this).parents('[class*="TEMPLATE"]').length==0){ 
    //do something 
     $(this).css('color','red') 
    } 
}) 

jsFiddle example

+1

不錯,乾淨的解決方案,與此! – JOSEFtw

+0

完美 - 一個更好的方法。 –

1
$("[class^=something]").each(function(){ 

selectedThing = $(this).find('div').not("[class^=other_TEMPLATE]").children().children(".selected_thing").html(); 

console.log(selectedThing); 

}); 
+1

LOL看起來像我們寫的完全一樣的選擇?你雖然比我快,但... :( – JOSEFtw

+1

是的,但是, - j08691贏了,我想。:D – sinisake

1
var selectedThings = []; 

$("[class^=something]").each(function(){ 

selected = $(this).find('div') 
.not("[class^=other_TEMPLATE]") 
.children().children(".selected_thing") 
.html(); 

if(selected !== undefined) 
{ 
    selectedThings.push(selected); 
} 

}); 

console.log(selectedThings); 

編輯:爲了減緩:(@nevermind韓元...