Jquery - 删除选择项(循环数组)

时间:2013-05-01 14:41:14

标签: javascript jquery

我使用以下代码来删除基于var“ColTypeCus”的选择项。

$(document).ready(function() {
    var ColTypeCus = '$FooVar';


    if (ColTypeCus.substr(0, 21) == "Machinery") {
        $("select#ctl00_PageBody_lstValuationSource option[value='3']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='1']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='2']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='4']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='5']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='12']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='13']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='14']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='15']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='16']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='18']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='19']").remove();
    }

    else if (ColTypeCus.substr(0, 7) == "Banking") {
        $("select#ctl00_PageBody_lstValuationSource option[value='17']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='3']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='7']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='8']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='9']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='10']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='11']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='12']").remove();
    }

    else if (ColTypeCus.substr(0, 19) == "Inventory") {
        $("select#ctl00_PageBody_lstValuationSource option[value='3']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='1']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='2']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='4']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='5']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='12']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='14']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='15']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='16']").remove();
        $("select#ctl00_PageBody_lstValuationSource option[value='18']").remove();
    }

});

效果很好,但我想知道是否有一种更优雅的方式(更少的代码行)我可以实现同样的事情。

一个想法是指定要在数组中列出要删除的项目并循环遍历项目。

***pseudocode***
    var ColType = ''
    var RemoveThis = ''

    if Coltype = "Machinery"
       RemoveThis = ('1,3,5,7,9');
             {
               $("select#ctl00_PageBody_lstValuationSource option[value='+RemoveThis+']").remove();
              }

    elseif Coltype = "Banking"
       RemoveThis = ('2,4,6,8');
            {
                $("select#ctl00_PageBody_lstValuationSource option[value='+RemoveThis+']").remove();
            }

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

您可以通过传递要删除选项的select对象和值数组来创建一个简化它的函数。

<强> Live Demo

function removeFromSelect(yourSelect, arrOptionsVal)
{
    $(yourSelect).find('option').filter(function(){
         return arrOptionsVal.indexOf(this.value) != -1;
    }).remove();      
}

这就是你怎么称呼它

removeFromSelect($('#sel1'), ['3','4']);

答案 1 :(得分:1)

使用for循环:

var items_to_remove = [1,3,5,7,9]

for(var i in items_to_remove) {
    $("select#ctl00_PageBody_lstValuationSource option[value=" + items_to_remove[i] + "]").remove();
}

答案 2 :(得分:0)

好吧,您至少可以通过编写辅助函数来简化代码:

function removeItem(id) {
    $("select#ctl00_PageBody_lstValuationSource option[value='"+id+"']").remove();
}
...
removeItem(3);
removeItem(5);
etc;

答案 3 :(得分:0)

这应该有效

$.each([1,3,5,7,9], function() {
    $("select#ctl00_PageBody_lstValuationSource option[value='"+this+"']").remove();
});