将jQuery对象数组转换为单个对象

时间:2012-01-15 21:27:37

标签: jquery arrays object html-lists

我不确定是否有更好的方法来实现这一点,但是我有一个ul,我正在过滤每个li元素的数据类型值。这适用于一个过滤器,因为它作为ul对象启动,然后返回一个数组,或者正确的li元素的数组,但是.find似乎不能处理对象数组,只有单个ul对象。如果有一种简单的方法可以将li对象转换回第二个过滤器的单个对象,或者可能有更好的方法来过滤数据类型值上的li数组。提前谢谢。

编辑:整个代码太长,无法在此处发布,但是,$data = $('#records');是给我ul的,然后var $filteredData = $data.find('li[data-type*= ' + $($filterType1+":checked").val() + ' ]');正确地为我提供了第一个过滤的记录。

有了这个,我在第一个过滤器之后得到一个包含24个项目的数组,但是在第二个过滤器后为零,即使应该有多个过滤器。为了测试,我然后没有过滤但只是让每个li都找到并尝试在该阵列上运行第一个过滤器并且它失败了。所以看起来好像.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 个答案:

答案 0 :(得分:1)

您正在使用find错误。你想要jQuery的filter。当你打电话

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

它搜索filteredData中每个元素的子元素。它不会搜索filteredData本身的元素。

http://jsfiddle.net/YfSMB/