Javascript 如何使用IE的jquery&refresh下拉菜单克隆带有html控件的div而不包含其内容?

Javascript 如何使用IE的jquery&refresh下拉菜单克隆带有html控件的div而不包含其内容?,javascript,asp.net-mvc-3,jquery-ui,jquery,Javascript,Asp.net Mvc 3,Jquery Ui,Jquery,我使用jquery.clone函数来克隆一个div,它有6个控件下拉列表、文本框等。我有一个功能,其中有两个下拉列表DDL a和DDL B。现在更改DDL A项将填充DDL B中的内容。该功能在Chrome、Firefox、Ipad中运行良好,但在IE中不起作用 这个场景就像我克隆了6个控件的div,为其添加一个新行 数据输入&当我从ddla中选择item时,它会显示相应的项 在DDLB中。但当我再次从DDL A中选择其他项时,DDL B的选项 不要精神焕发。奇怪的是,在IE的Firebug中,

我使用jquery.clone函数来克隆一个div,它有6个控件下拉列表、文本框等。我有一个功能,其中有两个下拉列表DDL a和DDL B。现在更改DDL A项将填充DDL B中的内容。该功能在Chrome、Firefox、Ipad中运行良好,但在IE中不起作用

这个场景就像我克隆了6个控件的div,为其添加一个新行 数据输入&当我从ddla中选择item时,它会显示相应的项 在DDLB中。但当我再次从DDL A中选择其他项时,DDL B的选项 不要精神焕发。奇怪的是,在IE的Firebug中,DDL B显示 正确的选项,但视图没有

是IE在重新填充之前没有刷新下拉列表,还是它不理解jquery
.克隆功能?有人能帮我找到一个合适的解决方案吗

IE的问题在于,当我们编写脚本时,它不会清除下拉列表

$b.empty

其他浏览器可以很好地处理这个代码段

所以我们需要使用

$ddlB[0].options.length=1

这些清除了IE中旧的下拉列表状态和数据。我现在成功地创建了一个功能,在该功能中,我使用不同的html控件克隆div。下面是代码片段

$(function () {
    $('.addRow').click(function () {
         var clickNumrow = $(this).data('clickNumrow');
         if (!clickNumrow) clickNumrow = 1;
         $("#original").clone(true).insertBefore('.addnewRow').attr('id', 'original_' + clickNumrow);
         $("#original_" + clickNumrow + " select#materialid")[0].options.length = 1;
         $(this).data('clickNumrow', ++clickNumrow);
     });  
});
我终于可以在下拉项的选择更改时刷新下拉列表

$(function () {
     $('select#categoryid').change(function () {
         var url = "/Material/FillMatByCatId";
         var ddlsource = this;
         var prt = $(this).parent().parent().parent().attr('id');
         var ddltarget = '#' + prt + ' select#materialid';
         if ($(this).val() != '') {

            $.getJSON(url, { CatId: $(this).val() }, function (data) {
                $(ddltarget)[0].options.length = 1;
                $(ddltarget).empty();
                $.each(data, function (index, optionData) {

                $(ddltarget).append("<option value='" + optionData.Value + "'>" + optionData.Text + "</option>");
                });
            });
         }
     });
});