1

我有一个脚本如下:

$('.Addable').find('input').each(function () {
            if ($(this).attr('name')) {
                var Name = $(this).attr('name');
                var Number = Name;
                if (Name.substring(Name.length - 1) == ']') {
                    var Fi = Name.lastIndexOf("[") + 1;
                    var Li = Name.lastIndexOf("]");
                    if (Fi > -1) {
                        Number = Name.substring(Fi, Li);
                        if (Number > Indx) {
                            Number = Number - 1;
                            $(this).attr('name', Name.substring(0, Fi) + Number + ']');
                        }
                    }
                }
            }
        });

因此,input完美地更改 s 的名称,现在我需要更改所有元素,不仅inputselects 我认为将第一行替换为:

$('.Addable').children().each(function () {

但这不起作用,那么您对选择所有子元素有什么建议?

4

2 回答 2

5

对于所有后代元素,您可以执行@gdoron 建议的操作。如果您要查找所有表单字段,而不仅仅是input's,您可以使用:input选择器,它也将匹配select,textarea等:

$('.Addable').find(':input').each(function() { ... });
于 2012-05-16T13:15:20.940 回答
2

那么你对选择所有子元素有什么建议呢?

选项:

$('.Addable *').each(function () {
$('.Addable').find('*').each(function () {

jQuery('*') 文档

描述:选择所有元素。
警告:所有或通用选择器非常慢,除非单独使用。

于 2012-05-16T13:13:44.200 回答