Предположим, у меня есть два контейнера с одинаковым CSS-кодом и их подэлементами.
<div class="wrapper">
<div class="item">item</div>
<div class="dummy">distrating item</div> <!-- dummy one -->
<div class="item">item</div>
<div class="item">item</div>
...
</div>
<div class="wrapper">
<div class="item">item</div>
<div class="dummy">distrating item</div> <!-- dummy one -->
<div class="item">item</div>
<div class="item">item</div>
...
</div>
Это, конечно, пример. но дело в том, что это. Если я определю селектор jQuery как:
$(".wrapper .item")
, а затем написать плагин jQuery, который должен что-то делать с этими элементами, но для каждого контейнера. Как мне предположить получить подмножество элементов из всего набора, принадлежащих каждому контейнеру?
$.fn.extend({
randomize: function() {
if (this.length > 1)
{
var set = this;
var origSelect = set.selector;
var containers = this.parent();
$.each(containers, function() {
var container = $(this);
var items = set.filter(?????);
....
});
}
return this;
}
});
На основании данных, которые у меня есть во внутренней функции:
- весь набор
- Оригинальный селектор элементов
- текущий контейнер
Есть ли селектор jQuery, который может помочь мне получить подмножество элементов из всего набора, принадлежащих определенному элементу.
Первая возможность
Это, конечно, не работает:
$(origSelect, container);
, что эквивалентно
$(".wrapper .item", ".wrapper");
потому что контейнерный класс CSS является частью оригинального селектора. Если бы не было, это бы сработало. но я не могу это контролировать.
Вторая возможность
Фильтрация по
container.children();
также потерпит неудачу, поскольку он также выберет пустышку предметов.
Но идея состоит в том, чтобы повторно использовать существующий набор jQuery, который, конечно, быстрее, чем снова выбирать узлы DOM, что делается в обоих случаях.
Так что в основном я хочу что-то вроде:
set.filter(something);
Но я не знаю, есть ли фильтр для того, что я хочу.