jQuery - 选择表行的简单方法

时间:2011-09-19 14:08:51

标签: jquery

我正在动态创建一个html表。

$('#facilityModalTable').append('<tr><td></td><td></td><td></td><td></td><td></td></tr>');

每行都会有一个<input type=Button value=Select />。我想在点击的选择按钮row中获取所有row数据。我可以想到几个选项,但我不确定该选择哪个。

  1. 创建data-uniqueid属性并分配给一行中的每一列。
  2. 以某种方式使用siblings()来解决问题。
  3. 其他...

  4. 你推荐什么?

3 个答案:

答案 0 :(得分:1)

$(this).closest('tr');

http://api.jquery.com/closest/

parents()不同,closest()向上移动DOM树,直到找到所提供选择器的匹配项。如果是嵌套表,parents('tr')会前往文档的根元素,可能会选择其他表行。

答案 1 :(得分:1)

我不知道这是否是最简单的方式,但这就是我可能只是从头脑中接近它的方式:

$("#facilityModalTable").append('<tr><td><input type="Button" value="Select"/></td><td>Hello</td><td>Red</td><td>12345</td><td>Buffalo, NY</td></tr>').find("input[type=button]").bind("click", function (e) {
    var $this = $(this),
    arrData = [];
    $this.parent().siblings().each(function (i, cell) {
        arrData[i] = $(cell).text();
    });
});

在此代码中,我添加了按钮并填写了一些值仅用于测试目的。我在这里做了一些假设,如果有些事情与你想要做的事情不完全一致,请原谅我。

如果有更快,更有效的方法,我不会感到惊讶。这只是一分钟之内。

干杯!

答案 2 :(得分:0)

简单:

$(this).parents("tr:first").css('border','solid 1px red');

每当TR中的一个被点击的项目 - 它去你并搜索其TR父级然后......