15

我正在尝试在与此类似的表中的特定行之后附加一个字符串 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>

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

我正在尝试这样做:

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

找到索引后,我想将我的输出字符串附加到这一行......

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

还有……我每次做的时候都注意到了

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

我得到0 ...

请帮助并让我知道我的问题是否不够清楚,以便我可以更好地解释。

4

5 回答 5

21

我假设您想要更新内容而不是追加,但它并没有真正改变任何东西。我认为您不想那样使用 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);
于 2013-01-04T23:27:09.507 回答
2

这是因为 find 不会搜索兄弟姐妹,只会搜索孩子。尝试将您的搜索附加到表格中。

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/

于 2013-01-04T23:18:31.657 回答
2

您不需要使用 find 方法,因为 data 属性位于 tr 本身上。此外,您对索引的使用也不起作用。请尝试以下操作。

$("tr[data-my_other_id='" + my_other_id + "']").insertAfter(...?);
于 2013-01-04T23:19:01.337 回答
1

find寻找后代。ATR不能是它自己的后代。

尝试使用filter()

$("tr").filter("[data-my_other_id='" + my_other_id + "']").index();
于 2013-01-04T23:19:12.503 回答
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>
于 2017-04-25T09:56:45.077 回答