【发布时间】:2011-07-04 10:10:26
【问题描述】:
我写了一个代码来过滤一个元素列表。
HTML:
<div id="ms-simpleCountries" class="ms-container">
<div class="ms-selectable"><ul><li style="display: none;" ms-value="fr">France</li><li style="display: none;" ms-value="ca">Canada</li><li ms-value="ar">Argentina</li><li ms-value="pt">Portugal</li></ul></div>
<div class="ms-selection"><ul><li ms-value="fr">France</li><li ms-value="ca">Canada</li></ul></div>
</div>
Javascript:
function filterAvailable()
{
var filterText = "ca"; // <-- string used to filter
var a_val;
var a_txt;
$('.ms-container .ms-selectable li').each (function () {
// valore elemento disponibile corrente
a_val = $(this).attr('ms-value'); // ca
a_txt = $(this).text(); // canada
// --
if ($('.ms-container .ms-selection [ms-value="' +a_val +'"]').length > 0)
{
$(this).hide();
}
else
{
if ($(this).text().toUpperCase().indexOf(filterText) >= 0)
{
$(this).show();
}
else
{
$(this).hide();
}
}
});//each
}//end
我在“ms-selectable”类中使用大约 500 个
谢谢!
【问题讨论】:
-
你真的需要构造多少次
$(this)? jQuery 并不是让 DOM 遍历超快的灵丹妙药;你的选择器一直从根目录搜索,这太慢了。