2014-11-25 2 views
0

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

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

Я создал пример: http://jsfiddle.net/ppd51pef/

<div class="foo"> 
    <div class="bar"> 
     <span>first:</span> 
    </div> 
</div> 
<div class="foo bar"> 
    <span>second:</span> 
</div> 

И на Javascript, который идет с ним:

var foos = $(".foo"); 
foos.find(".bar").append("<span>find</span> "); 
foos.filter(".bar").append("<span>filter</span> "); 
foos.find(".bar").addBack().filter(".bar").append("<span>ugly</span> "); 

Здесь у меня есть объект JQuery "FOOS", который соответствует двум "Foo" классов. Учитывая «foos», я хочу выбрать два класса «bar».

Выход примера:

first: find ugly 
second: filter ugly 

В основном я ищу менее уродливый способ достижения того, что делает третий из трех запросов.

ответ

0

Вы можете использовать версию addBack() с селектором

var foos = $(".foo"); 
 
foos.find(".bar").addBack('.bar').append("<span>ugly</span> ");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="foo"> 
 
    <div class="bar"> 
 
    <span>first:</span> 
 
    </div> 
 
</div> 
 
<div class="foo bar"> 
 
    <span>second:</span> 
 
</div>

+0

Это немного более высокой производительности мудрым я думаю, но все равно некрасиво код, потому что я должен указать селектор «.bar» дважды , – kaymes

Смежные вопросы