对于某些jQuery代码存在一些问题,但实质上,我有一个表可能会或可能不会在第一列中包含BR元素。如果没有BR元素,则以下代码正常工作并返回值。但是,当存在BR元素时,代码值将返回大多数列的任何值。有什么想法可能会发生什么?
以下jQuery适用于第一行('Row-19'),并将显示每个元素的值;但是,对于第二行('Row-21'),仅显示第一行和倒数第二列的值。在生产环境中,我们使用此代码根据需要更新或获取给定TD元素中的值,因此迭代列不是首选选项。
的jQuery
alert($('#Row-' + id + ' :nth-child(' + ndx + ')').html());
XHTML代码
<tr id="Row-19">
<td>Value</td>
<td>Value</td>
<td>Value</td>
<td>Value</td>
<td>1</td>
<td>2</td>
<td>
<a href="#" title="Edit" onclick="edit('19');">[Edit]</a>
<a href="#" title="Delete" onclick="delete('19');">[Delete]</a>
</td>
</tr>
<tr id="Row-21">
<td>
Value<br />
Value<br />
Value<br />
Value<br />
Value<br />
</td>
<td>Value</td>
<td>Value</td>
<td>Value</td>
<td>3</td>
<td>4</td>
<td>
<a href="#" title="Edit" onclick="edit('21');">[Edit]</a>
<a href="#" title="Delete" onclick="delete('21');">[Delete]</a>
</td>
</tr>
答案 0 :(得分:2)
对我来说很好:http://jsbin.com/awame3
$("a[title='Edit']").click(function(e){
e.preventDefault();
$(this).parent().prevAll("td").each(function(){
alert($(this).html());
});
});
$("a[title='Edit']").click(function(e){
e.preventDefault();
var cell = $(this).closest("tr").find("td:eq(0)").html("new values");
alert($(cell).html());
});
您可以将类应用于需要操作的任何单元格,并完全放弃索引:
$(this).parent().siblings("td.editMe").html("new values");
使用过滤器,您可以获得单元格2到5:
$(this).closest("tr").children("td:gt(0)").filter(":lt(5)");