我在我的webform上有2个下拉列表,并使用jquery尝试根据第一个下拉选择过滤/重置过滤器第二个下拉元素。
$(document).ready(function()
{
$('#dropdown1').change(function(e)
{
switch ($(this).val())
{
case "4":
//this removal works
$('#dropdown2').filter(function()
{
return ($(this).val() == 16);
}).remove();
break;
.................
default:
//how would I restore filter here?
}
}
});
删除部分是有效的,因此它可以毫无问题地过滤项目,但如果在下拉列表中选择了其他内容,则我很难在下拉列表2上恢复过滤器。我尝试使用.hide()
和.show()
而不是.remove()
,但它似乎至少在IE6上不起作用。
答案 0 :(得分:1)
在文档准备就绪时,请在dropdown2中复制值,如下所示:
var drp2values = $('#dropdown2').html();
然后,只要您想将dropdown2中的值重置为其原始状态,请执行以下操作:
$('#dropdown2').html(drp2values);
var中的实际值将类似于:
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="16">16</option>
刚尝试过:
此代码有效:
$(document).ready(function()
{
var drp2values = $('#dropdown2').html();
$('#dropdown1').change(function(e)
{
switch ($(this).val())
{
case "4":
//this removal works... now ;)
$('#dropdown2').find('option').filter(function()
{
alert('in4 filt' + drp2values + $(this).val());
return ($(this).val() == 16);
}).remove();
break;
default:
//how would I restore filter here?
$('#dropdown2').html(drp2values);
}
});
});
使用此HTML
<BODY>
<select id='dropdown1'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<select id='dropdown2'>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="16">16</option>
</select>
</BODY>
您发布的原始代码,您说删除工作,它没有删除值为16的单个选项,它删除了整个下拉列表,因为您没有在筛选之前选择选项,您删除了下拉列表:)
希望这有帮助。