2012-05-07 127 views
3

我在这里有一个问题,我无法在我的表内设置我想要的属性。jQuery更改元素中元素的属性

<tr id="ROW1" class="duplicate"> 
    <td> 
    <textarea class="cl_text" cols="20" name="descriptions1"></textarea> 
    </td> 
    <td> 
    <input class="cl_form" size="10" value="" name="expectedDate1"> 
    </td> 
    <td> 
    <input class="cl_form" size="10" value="" name="slxInput1"> 
    </td> 
    ... 
    ... 
</tr> 

我可以改变TD元素的属性,但不能改变TD元素的属性。 我需要更改TD元素中的所有元素,很容易更改第一个元素和最后一个元素,但其他元素如何? 如果可能的话,我只是想要一个循环,将改变所有这些属性#ROW1

编辑: 我添加了我的代码不工作;

$("#ROW" + Num).each(function(index) { 
    temp = $(this).children(":first").attr("name"); 
    $(this).children(":first").attr("name", temp+Num); 
}); 
+0

请发表您的代码(编辑问题并添加它)。 –

+0

您应该浏览jQuery文档:http://api.jquery.com/category/selectors/和http://api.jquery.com/category/traversing/ –

回答

1
$("#ROW1 td").each(function(){ 
    $.each($(this).children(
$(this).attr(//put some attribute) 
)); 
}) 
+0

我以某种方式仍然需要在$(this)之后添加children()来访问元素,谢谢 – MegaNairda

+1

这没什么道理......'children'不接受一个参数。 –

+0

你的权利,我没有注意到。这只是我需要把'TD'元素放在脚本上,我没有注意到答案的一部分 – MegaNairda

0

要获得#ROW1所有子元素:

$('#ROW1').find('*') 
+0

但是不是#ROW1的子元素是TD元素? – MegaNairda

+0

@MegaNairda:'find'方法不仅获得直接子元素,而且还获得子元素的子元素,所以它将获得td元素和其中的所有元素。 – Guffa

+0

@迈克尔:不,你称之为“直系孩子”是*孩子*,其他一切都是*后代* ......就像在现实生活中一样。我的孩子的孩子不是我自己的孩子。 –

5

为表行中的所有输入和文字区域更改属性:

$('#ROW1 textarea, #ROW1 input').attr('someattr', 'value'); 
+0

或者如果只是'td'必须排除:'$('#ROW1> td *')'或类似的。 –