0

我正在使用jquery .clone()函数来克隆一个具有6 个控件(下拉菜单、文本框等)的div。我有一个功能,其中有 2 个下拉菜单DDL ADDL B。现在更改 DDL A 项会填充 DDL B 中的内容。此功能在ChromeFirefoxIpad中运行良好,但在IE中不起作用。

该场景就像我克隆了 6 个控件的 div 以添加新的数据输入行,并且当我从 DDL A 中选择项目时,它会在 DDLB 中显示相应的项目。但是当我再次从 DDL A 中选择其他项目时,DDL B 的选项不会刷新。奇怪的是,在 IE 的 Firebug 中,DDL B 显示了正确的选项,但视图却没有。

是 IE 在重新填充之前没有刷新下拉列表还是它不理解 jquery .clone() 函数?谁能帮我找到合适的解决方案?

4

1 回答 1

0

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

$("#ddlB").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>");
                });
            });
         }
     });
});
于 2013-04-18T14:04:18.353 回答