当TD元素包含BR元素时,jQuery Selection不起作用

时间:2010-01-18 18:00:27

标签: jquery xhtml

对于某些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>&nbsp;
        <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>&nbsp;
        <a href="#" title="Delete" onclick="delete('21');">[Delete]</a>
    </td>
</tr>

1 个答案:

答案 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

使用过滤器,您可以获得单元格2到5:

$(this).closest("tr").children("td:gt(0)").filter(":lt(5)");