Конвертировать массив объектов jQuery в один объект - PullRequest
0 голосов
/ 16 января 2012

Я не уверен, есть ли лучший способ сделать это, однако у меня есть ul, который я фильтрую по значению типа данных каждого элемента li.Это прекрасно работает для одного фильтра, так как он запускается как объект ul, а затем возвращает массив или подобный массиву правильных элементов li, однако .find, похоже, не работает с массивом объектов, только с одним объектом ul.Если есть простой способ преобразовать объекты li обратно в один объект для второго фильтра, или, возможно, есть лучший способ отфильтровать массив li по значению типа данных.Заранее спасибо.

Редактировать: Весь код слишком длинный, чтобы публиковать здесь, однако, $data = $('#records'); - это то, что дает мне ul, а затем var $filteredData = $data.find('li[data-type*= ' + $($filterType1+":checked").val() + ' ]'); - то, что правильно дает мне первые отфильтрованные записи.

С этим я получаю массив из 24 элементов после первого фильтра, но затем ноль со вторым фильтром, хотя их должно быть больше одного.Чтобы проверить, я тогда не фильтровал, а просто получил каждый li с find и попытался запустить первый фильтр для этого массива, но он не прошел.Таким образом, создается впечатление, что .find не может быть запущен над массивом.

Это работает:

$data = $('#records');  
var $filteredData = $data.find('li[data-type*= ' + $($filterType1+":checked").val() + ' ]');

Оба эти сбоя:

$data = $('#records');  
var $filteredData = $data.find('li[data-type*= ' + $($filterType1+":checked").val() + ' ]');  
$filteredData = $filteredData.find('li[data-type*= ' + $($filterType2+":checked").val() + ' ]');

$data = $('#records');  
var $filteredData = $data.find('li');  
$filteredData = $filteredData.find('li[data-type*= ' + $($filterType1+":checked").val() + ' ]');

1 Ответ

1 голос
/ 19 января 2012

Вы используете поиск неправильно. Вместо этого вам нужен фильтр jQuery . Когда вы звоните

$filteredData = $filteredData.find('li[data-type*=x]');

Поиск дочерних элементов каждого элемента в FilterData. Он не ищет элементы самого FilterData.

http://jsfiddle.net/YfSMB/

...