jQuery:如何在克隆多个下拉菜单后重置它们?

发布于 2024-11-02 17:13:21 字数 384 浏览 4 评论 0原文

目前,每次您单击“添加”按钮时,我的代码都会克隆 3 个下拉菜单。

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

在这个 JSFiddle 中最容易看到:

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

所以,如果将第一个下拉列表更改为 agent,然后单击 +,您将看到第二行出现重复,而我希望将其重置为 tagsoperands

非常感谢任何帮助。

At the moment my code clones 3 dropdowns everytime you click the add button.

I managed to get it to copy the row exactly because before, the first dropdown would reset by itself but the other two would not so I was just wondering how to reset all 3 dropdowns?

It is easiest to see in this JSFiddle:

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

So, if you change the first dropdown to agent and then click the + you will see the second row appears duplicated whereas I would like it to reset to tags, operands and values.

Any help greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

白况 2024-11-09 17:13:21

您可以使用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/

You can use removeAttr to remove selected attribute and then fire a change() event.

In your case:

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

Modified example: http://jsfiddle.net/ZF3mc/2/

╭⌒浅淡时光〆 2024-11-09 17:13:21

如果我理解你的问题,你希望重复的选择行重置它们的值。

在这种情况下,您可以删除此:

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);

If I understood your question, you want the duplicated row of selects to reset their values.

In this case you can just remove this:

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

and replace it with:

dropdownclone.find('option').attr('selected', false);
早乙女 2024-11-09 17:13:21

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

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

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

Find all dropdowns in your clone. For each dropdown, check every option tags for a selected attribute and remove it. Something like this:

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

Or better yet, find only the selected option tags using :selected filter before removing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文