2

我不知道如何找到上一个。使用 jQuery 类“cmd 和路径”。

这是我的html代码:

<tr>
    <td>MySQL</td>
    <td class="path">/etc/init.d/mysql</td>
    <td class="cmd">status</td>
    <td><i class="icon-remove"></i> <i class="icon-pencil"></i></td>
</tr>

我的 jQuery 代码看起来:

$('i.icon-pencil').click(function() {
    var text = $(this).prev('.cmd').text();
    alert(text);
});
4

6 回答 6

2
$('i.icon-pencil').click(function() {
    var text = $(this).closest('td').prev('.cmd').text();
    alert(text);
});

小提琴

于 2013-05-13T12:58:22.423 回答
2
$('i.icon-pencil').click(function() {
    var tr = $(this).closest('tr'),
        txtPath = tr.find('.path').text(),
        txtCmd = tr.find('.cmd').text();

});
于 2013-05-13T13:00:34.787 回答
1

您可以使用:

$('i.icon-pencil').click(function() {
    var parent = $(this).parent(),
        txtCmd = parent.prev('.cmd').text(),
        txtPath = parent.prev('.path').text();
});
于 2013-05-13T12:59:17.223 回答
1

你代码中的问题是'.cmd'不是你$(this) 的prev to parent.

$('i.icon-pencil').click(function() {
    var text = $(this).parent().prev('.cmd').text();
    alert(text);
});
于 2013-05-13T13:04:56.777 回答
0
$('i.icon-pencil').click(function() {
    var text = $(this).closest('tr').children('.cmd').text(); // .path can also be the selector.
    alert(text);
});

另一种方法是使用.prevAll()

$('i.icon-pencil').click(function() {
    var text = $(this).parent().prevAll('.cmd').text(); // .path can also be the selector.
    alert(text);
});
于 2013-05-13T13:00:03.567 回答
0

prev() 不起作用,因为它没有遍历 DOM 树,您需要这样做才能使其正常工作。您需要上 2 个级别,到达 tr,然后在子项中搜索“cmd”类的“td”标签。你的代码应该像这样工作......

$('i.icon-pencil').click(function() {
var text = $(this).parent().parent().children('.cmd').text();
alert(text);
});

希望有帮助。

于 2013-05-13T13:35:12.747 回答