Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Момогите с селекторами (https://javascript.ru/forum/jquery/9558-momogite-s-selektorami.html)

Roboteck 24.05.2010 14:38

Момогите с селекторами
 
есть html:

<div class="blok">
	...<div class="select">Выбрать этот</div>...
	...<div class="select">Выбрать этот</div>...
	...<div class="select">Выбрать этот</div>...
    
    <div class="blok">
        ...<div class="select">Выбрать этот</div>...
        ...<div class="select">Выбрать этот</div>...
        ...<div class="select">Выбрать этот</div>...
    </div>
</div>


т.е. в каждом .blok есть группа .select

Мне надо выбрать все .select, которые находятся в .blok, кроме тех, которые находятся в другом .blok, чтобы когда я пишу

$(".blok").each(function ()
{
	var _selects=$(this).find(".select");
});


у меня 2 раза получалась группа _selects, в которых будет по 3 своих .select, а у меня получается что в первой группе 3 своих и 3 чужих .select'а, в документации нашел только способ, когда можно использовать .children(".select"), тогда выбрались бы именно те, но .select не являются прямыми дочерними элементами между .blok и .select много всяких элементов.

Помогите, пожалуйста, уже пол дня парюсь над такой ерундой.

Roboteck 24.05.2010 14:53

И в каждом .blok может быть любое количество других вложенных .blok, нужен селектор, с помощью которого можно будет выбрать только те .select, которые относятся именно к этому .blok, по русски селектор должен выглядеть примерно так:

$(".blok").each(function ()
{
    var _selects=$(this).find(".select которые не во вложенных .blok");
});

micscr 24.05.2010 15:37

Попробуй так:
$(".blok").each(function  ()
{
    var myblock = this; 
    var _selects=$(this).find(".select").filter(function(i){
      var parblock = $(this).closest('.blok')[0]; // ближайший родитель .blok
      return (myblock == parblock)
    });
});

Roboteck 24.05.2010 15:47

идею понял, грамотно)
конечно хочется обойтись только селекторами, но если с помощью них не получится, но это очень хороший вариант, спасибо)


Часовой пояс GMT +3, время: 23:04.