2012-01-15 98 views
-1

我不确定是否有更好的方法来完成此操作,但是我有一个ul来过滤每个li元素的数据类型值。这适用于一个过滤器,因为它作为ul对象启动,然后返回一个数组或类似于正确的li元素的数组,但是.find看起来不适用于对象数组,只有单个ul对象。如果有一种简单的方法将li对象转换回第二个过滤器的单个对象,或者有更好的方法来过滤数据类型值的li数组。先谢谢你。将jQuery对象数组转换为单个对象

编辑:整个代码太长,不能在这里发布,但是,$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() + ' ]'); 
+2

请向我们显示您的代码。 – 2012-01-15 21:32:21

+0

你看过[jQuery map](http://api.jquery.com/jQuery.map/)函数吗? – j08691 2012-01-15 21:41:51

+0

链式过滤器在jQuery中正常工作。您将需要发布更多代码来诊断此问题。 http://jsfiddle.net/ZsJaQ/ – mrtsherman 2012-01-16 03:56:29

回答

1

您正在使用不正确的找到。你想要jQuery的filter。当您致电

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

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

http://jsfiddle.net/YfSMB/

+0

谢谢!我其实昨天已经想清楚了,但没有时间在这里发表评论,所以非常感谢你回答我的问题! – Duffmaster33 2012-01-19 12:23:08