2011-02-08 2 views

答えて

5

あなたは少しでそれを微調整するが、シズルの代わりにメソッドを使用してすることができます

$('#test').find('option').filter(function() { 
    return this.selected && this.value.length 
}); 

ベンチマークhttp://jsperf.com/sizzle-vs-methods-filter/12

.filter()は私のために、約70%高速です。

+0

うわー、よくできました。リンクの+1 – Hussein

+0

私はthis.selected && this.value.lengthを試しました。Console.logはjquery()で値を与えていません。 – Hussein

+0

@alex:whoops、私は 'return文'を忘れました。更新を参照してください。ごめんなさい。 – jAndy

0

私の意見では、常にfind()ハンドラは必要ありません。

私はちょうどこのようにそれを記述します:

$('#test option:selected[value!=""]')

私はまだそれをテストしていません。

+0

http://jsperf.comを使用すると、これは2%遅い結果を示しています。フィルタを使用して行く方法です。 – Hussein