2012-01-15 96 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