Я знаю, что я рядом, но мне нужен намек! Я пытаюсь выбрать данные из определенных элементов класса, содержащихся в других элементах на основе того, имеет ли конкретный родитель тег в имени класса или нет.
<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>
Как вы можете видеть, часть проблемы состоит в том, что некоторые имена классов могут немного меняться, но я хочу игнорировать те, где появляется TEMPLATE.
Вы можете использовать это:
$('.selected_thing').each(function(){
if($(this).parents('[class*="TEMPLATE"]').length==0){
//do something
$(this).css('color','red')
}
})
$('.selected_thing').not('[class*="TEMPLATE"].selected_thing');
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);
EDIT: Чтобы замедлить :( @nevermind выиграл...
$("[class^=something]").each(function(){
selectedThing = $(this).find('div').not("[class^=other_TEMPLATE]").children().children(".selected_thing").html();
console.log(selectedThing);
});