jQuery:如何在克隆后重置多个下拉列表?

时间:2011-04-21 13:40:16

标签: javascript jquery drop-down-menu clone dynamic-forms

目前,只要您点击添加按钮,我的代码就会克隆3个下拉列表。

我设法让它完全复制行,因为之前,第一个下拉列表会自行重置,但其他两个不会这样,我只是想知道如何重置所有3个下拉列表?

在这个JSFiddle中最容易看到:

http://jsfiddle.net/jydqK/7/

因此,如果您将第一个下拉列表更改为agent,然后点击+,您会看到第二行显示重复,而我希望它重置为tagsoperandsvalues

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您可以使用removeAttr删除selected属性,然后触发change()事件。

在你的情况下:

dropdownclone.find('select.tags option:selected').removeAttr('selected');
dropdownclone.find('select.tags option:first').attr('selected','selected');
dropdownclone.find('select.tags').trigger('change');

修改示例:http://jsfiddle.net/ZF3mc/2/

答案 1 :(得分:1)

如果我理解了您的问题,您希望重复的选择行重置其值。

在这种情况下,你可以删除它:

dropdownclone.find('select').each(function(index, item) {
 //set new select to value of old select
$(item).val( $dropdownSelects.eq(index).val() );
});

并将其替换为:

dropdownclone.find('option').attr('selected', false);

答案 2 :(得分:-1)

查找克隆中的所有下拉列表。对于每个下拉列表,请检查所选属性的每个选项标记并将其删除。像这样:

clone.find('select').each(function() {
    $(this).find('option').each(function() {
        $(this).removeAttr('selected');
    });
});

或者更好的是,在删除之前,使用:选择过滤器仅查找选定的选项标记。