如何在DIV中更改所有控件的name属性

时间:2013-10-07 12:44:27

标签: jquery

我使用下面的jquery通过jquery更改所有名称属性值iterate。我尝试将id值分配给div中所有控件的name属性,div id为Register。这是我的代码。

 $(document).ready(function () {
            $.each($('#Register').children(), function () {
                alert("pp");
                $(this).attr("name", $(this).attr("id"));
            });
        });

当我运行我的页面时,上面的脚本假设要运行但它没有运行。所以指导我在哪里弄错了。感谢

更新

最后这个工作

    $(document).ready(function () {
        $('#Register').find('*').each(function () {
            $(this).attr("name", $(this).attr("id"));
        });
    });

2 个答案:

答案 0 :(得分:1)

使用.attr( attributeName, function(index, attr) )尝试此操作: -

$('#Register').children().attr("name", function (index, oldName) {
    return this.id || '';
});

FIDDLE DEMO

答案 1 :(得分:1)

.children()只会给你直接的孩子(不是所有的后代)。

您应该使用.find('*')来获取所有降序节点。

注意:您的代码会为基本节点的每个后代添加name属性(包括divspan,...)。如果您只想更新input个节点,则应为.find()添加足够的过滤器:

  • .find('input')将选择input
  • 类型的所有后代节点
  • .find(':input')将选择inputselecttextareabutton
  • 类型的所有后代节点