使下拉列表查找()更快

Making a dropdown find() faster

本文关键字:更快 查找 下拉列表      更新时间:2023-09-26

我有一个下拉框和一个用于自动过滤下拉列表的输入。我需要更快地进行下拉列表过滤。我在下拉菜单之前添加了一个文本框和一个用于过滤下拉列表的事件:代码片段为:

 td.prepend(' <span class="ms-metadata"><br/>(type some chars to filter )</span><br/>');
 .....
 td.prepend($('<input/>', {id: 'DPFilter',
                        onkeyup: 'filterDP(this)'
                         }));

在函数过滤器DP(元素)上:

....
var value = $(element).val();
$( dropdown).find("option").each(function() {
        var optionValue = $(this).val();
        $(dropdown).find('option[value="' + optionValue + '"]').map(function () {return     $(this).parent('span').length === 0 ? this : null;})
               .wrap('<span>')
         $(this).map(function () { return $(this).parent('span').length === 0 ? this : null;}).wrap('<span>').hide();
...
if ((value == "") ||  ($(this).text().search(value) > -1) ){
     $(dropdown).find('option[value="'+optionValue+'"]').show();
}

我唯一能想到的地方是 $(dropdown).find('option[value="'+optionValue+'"]').show(); ,而不是找到它,使用索引,但我不知道怎么做。

另外,我使用 find() 两次(在未显示的代码中),变量会更快吗?谢谢

您可以使用 filter 来简化和加快此操作:

var value = $(element).val();
$(dropdown).filter(function() {
    if ($(this).text().indexOf(value) != -1) {
        $(this).show();
    }
});