我不确定是否有更好的方法来实现这一点,但是我有一个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() + ' ]');
答案 0 :(得分:1)
您正在使用find错误。你想要jQuery的filter。当你打电话
$filteredData = $filteredData.find('li[data-type*=x]');
它搜索filteredData中每个元素的子元素。它不会搜索filteredData本身的元素。