jquery重置条件过滤器

时间:2010-04-21 22:18:52

标签: asp.net jquery

我在我的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上不起作用。

1 个答案:

答案 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的单个选项,它删除了整个下拉列表,因为您没有在筛选之前选择选项,您删除了下拉列表:)

希望这有帮助。