我使用以下代码来删除基于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();
}
有什么建议吗?
答案 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();
});