JQuery выбрать детей без класса, как

0

Я знаю, что я рядом, но мне нужен намек! Я пытаюсь выбрать данные из определенных элементов класса, содержащихся в других элементах на основе того, имеет ли конкретный родитель тег в имени класса или нет.

<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.

Теги:

4 ответа

2
Лучший ответ

Вы можете использовать это:

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

Пример jsFiddle

  • 1
    Хорошее и чистое решение, иди с этим!
  • 0
    Идеальный - гораздо лучший подход. Спасибо!
1

$('.selected_thing').not('[class*="TEMPLATE"].selected_thing');

Сопровождающий JSfiddle

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);

EDIT: Чтобы замедлить :( @nevermind выиграл...

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

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

console.log(selectedThing);

});
  • 1
    LOL похоже, что мы написали точно такой же селектор ?! Вы были быстрее меня, хотя ... :(
  • 1
    Да, но, думаю, выигрывает j08691. : D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню