2012-05-16 50 views
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表示改名完美,螺母,现在我需要改变所有元素不仅input就像select的I认为将第一行替换为:

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

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

+1

这个是什么的HTML?当你说“全部”时,范围是什么?所有的后代? – Joseph

+0

@约瑟夫。所有===所有:),只是他可能并不真正想要他们**全**。 – gdoron

+0

请使用骆驼案件的变量。 – gdoron

回答

5

对于所有后代元素,您可以执行@gdoron建议的操作。如果您正在寻找一般所有表单域,不只是input的,你可以使用:input选择,这也将匹配selecttextarea等:

$('.Addable').find(':input').each(function() { ... }); 
+0

你就不能写'$( '可加成:输入。')各(...);'? – 3rgo

+2

关闭。 '$('。Addable:input')。each(...);'(你需要空间)。 – jmar777

+0

哎呀!我的意思是写,但我猜我的手指滑了下来...... – 3rgo

2

那么,什么是您的建议,选择所有子元素?

选项:

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

jQuery('*')docs

说明:选择所有元素。
注意:所有或通用,选择是极其缓慢的,在使用时其本身除了。