Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   поиск элемента (https://javascript.ru/forum/jquery/42080-poisk-ehlementa.html)

FanAizu 11.10.2013 14:50

поиск элемента
 
Есть следующий код:
var blocks1 = $('.blocks1');
var blocks3 = $('.blocks3');


теперь мне нужно найти blocks3, который находятся внутри blocks1, но чтобы между blocks3 и blocks1 не было блоков с классом .block2. Как записать это выражение? Нужно что-то вроде этого(продолжение первого куска кода):
blocks1.find(':not(.block2)' blocks3);

понятно, что вот этот кусок ':not(.block2)' blocks3 неправильно записан. Как правильно написать? Спасибо.
Знаю как решить эту задачу, но не знаю как это правильнее записать, чтобы максимально быстро выполнялось, поэтому и обращаюсь к вам.

ksa 11.10.2013 15:11

Цитата:

Сообщение от FanAizu
нужно найти blocks3, который находятся внутри blocks1, но чтобы между blocks3 и blocks1 не было блоков с классом .block2.

Если один находится внутри... То как еще кто-то может быть между ними? :blink:

Skipp 11.10.2013 15:16

Попробуйте:
blocks1.children('.blocks3')

FanAizu 11.10.2013 15:59

Поясню в чем затык подробнее:
есть уже найденные теги с классом .block1
[code=javascript]
var block1 = $('.block1');
[/code]
и есть уже найденные теги с классом .block3 внутри block1
[code=javascript]
var block3 = $('.block3', block1);
[/code]

Теперь мне нужно отфильтровать block3. А именно - нужно убрать из block3 те элементы, которые идут внутри элементов из block1, и между block1 и block3 имеется тег классом block2.

BETEPAH 11.10.2013 16:16

Цитата:

Сообщение от FanAizu
Теперь мне нужно отфильтровать block3. А именно - нужно убрать из block3 те элементы, которые идут внутри элементов из block1, и между block1 и block3 имеется тег классом block2.

имеется в виду, что блок3 может быть вложен в блок2, который вложен в блок1? Или имеется в виду, что в блок1 вложены равноуровневые блок2 и блок3 и блок2 идет перед блок3?
Нарисуйте html примера, а то не очень понятно слово "между"

nyols 11.10.2013 23:25

$(':not(.block2) .block3, > .block3', '.block1');


<!DOCTYPE HTML>
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  </head>
  <body>
    <div class="block1">
      <div class="block2">
        <div class="block3"></div>
      </div>
      <div class="block3"></div>
      <div>
        <div class="block3"></div>
      </div>
    </div>
    
    <div class="block1">
      <div class="block2">
        <div class="block3"></div>
      </div>
      <div class="block3"></div>
      <div>
        <div class="block3"></div>
      </div>
    </div>
    
    <script>
      var b = $(':not(.block2) .block3, > .block3', '.block1');
      
      alert(b.length);
    </script>
  </body>
</html>


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