JQuery:查找具有特定数据属性值的行(的索引)

时间:2013-01-04 23:12:04

标签: javascript jquery

我试图在类似于这个表的特定行之后追加一个字符串myoutput:

<table>
<tr data-my_id='1'> <td> content </td> </tr>
<tr data-my_id='2' data-my_other_id='1' > <td> content </td> </tr>
<tr data-my_id='3' data-my_other_id='2' > <td> content </td> </tr>
</table>

所以我想说我想在data-my_other_id='2'的tr之后追加我的输出字符串 (请注意,在我的代码中,my_other_id = 2已经存在)

我正在努力实现这一目标:

var want = $("tr").find("[data-my_other_id='" + my_other_id + "']").index();

找到索引后,我想将输出strhing追加到这一行......

$(want).insertAfter(...?);

另外......每当我做的时候我都注意到了

alert( want = $("tr").find("[data-my_other_id='" + my_other_id + "']").length)

我得到0 ......

请帮助我,如果我的问题不够明确,请告诉我,以便我能更好地解释。

5 个答案:

答案 0 :(得分:15)

我假设你想要更新内容而不是追加,但它并没有真正改变任何东西。我不认为你想以这种方式使用find()。尝试类似:

var $row = $('tr[data-my_other_id="' + id + '"]');
// should be the index of the tr in the <table>
// this may not be a good idea though - what if you add a header row later?
var index = row.index() + 1; // if you want 1-based indices
$row.find("td").text("I am row #" + index);

答案 1 :(得分:2)

这是因为找不到兄弟姐妹,只有孩子。尝试将搜索附加到表格。

HTML:

<table>
<tr data-my_id='1'> <td> content </td> </tr>
<tr data-my_id='2' data-my_other_id='1' > <td> content </td> </tr>
<tr data-my_id='3' data-my_other_id='2' > <td> content </td> </tr>
</table>​

JS:

var my_other_id = 2;
alert( $("table").find("[data-my_other_id='" + my_other_id + "']").length);​

演示:http://jsfiddle.net/gDb3A/

答案 2 :(得分:2)

您不需要使用find方法,因为数据属性在tr本身上。你使用索引也行不通。请尝试以下方法。

$("tr[data-my_other_id='" + my_other_id + "']").insertAfter(...?);

答案 3 :(得分:1)

find寻找后代。 TR不能成为自己的后代。

尝试使用filter()

$("tr").filter("[data-my_other_id='" + my_other_id + "']").index();

答案 4 :(得分:0)

在特定表中查找以便更快,您可以使用此方法。

JS:

$('any-button').click(function(){
    var id = 23;
    var $row = $('.your-class tbody tr[data-id="' + id + '"]');
    $row.remove();
});

HTML

<table class="table table-striped your-class">
        <thead>
        <tr>...<tr/>
       </thead>
      <tbody>
        <tr data-id="23">Some text</tr>
       <tr data-id="43">Some text</tr>
       <tr data-id="43">Some text</tr>
     </tbody>
</table>