2012-01-15 18 views
-1

これを行うより良い方法があるかどうかはわかりませんが、各li要素のデータ型の値をフィルタリングしているulがあります。これは、ulオブジェクトとして開始し、正しいli要素の配列や配列のようなものを返すため、1つのフィルタでうまく機能します。ただし、.findはオブジェクトの配列ではなく、単一のulオブジェクトでしか機能しないようです。 liオブジェクトを2番目のフィルタの単一のオブジェクトに簡単に変換する方法がある場合や、データ型の値に対してliの配列をフィルタリングするより良い方法があります。前もって感謝します。オブジェクトのjQuery配列を単一のオブジェクトに変換する

編集:コード全体が長すぎて、ここに投稿できませんが、$data = $('#records');は私にulを与え、var $filteredData = $data.find('li[data-type*= ' + $($filterType1+":checked").val() + ' ]');は最初にフィルタリングされたレコードを返します。

これだけでは、最初のフィルタの後に24個の項目の配列が得られますが、2番目のフィルタがある場合でも2番目のフィルタでゼロになります。テストするために、私はフィルタリングをしなかったが、見つかったばかりのすべてのファイルを見つけて、最初のフィルタをその配列上で実行しようとしたが、同じ失敗に終わった。したがって、.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

コードを表示してください。 –

+0

[jQuery map](http://api.jquery.com/jQuery.map/)の機能を調べましたか? – j08691

+0

連鎖フィルタはjQueryで正常に動作します。これを診断するためにコードを投稿する必要があります。 http://jsfiddle.net/ZsJaQ/ – mrtsherman

答えて

1

あなたは間違って見つける使用しています。代わりに、jQueryのfilterが必要です。あなたが電話するとき

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

filteredDataの各要素の子を検索します。 filteredData自体の要素は検索されません。

http://jsfiddle.net/YfSMB/

+0

ありがとうございました!私は実際にこれを昨日考え出したが、ここでコメントする時間がなかったので、私の質問に答えてくれてありがとう! – Duffmaster33

関連する問題