1
<tbody>
    <tr>
        <td>Name1</td>
        <td>Position1</td>
        <td>Operation1</td>
    </tr>
    <tr>
        <td>Name2</td>
        <td>Position2</td>
        <td>Operation2</td>
    </tr>
</tbody>

<td>当我单击同一个<td>内部的最后一个时,我需要在第一个中获取字符串<tr>,例如,如果我单击<td>包含“Operation1”,我可以获得一个值为“Name1”的字符串。这个怎么做?(实际上不同<td>s之间的字符串没有任何关系,就像这里的后缀一样)哦,顺便说一句,这个表是使用jQuery Datatables插件创建的。

非常感谢!

4

3 回答 3

4

有多种方法可以做到这一点,例如:

$('td').parent().children().filter('td:first');
$('td').parent('tr').find('td:first');
$('td').siblings('td:first');

这是一个 jsFiddle 示例。

于 2013-05-17T00:20:00.680 回答
0

用这个 :

$(document).on('click', 'td:last', function(){
    $(this).siblings(':first')
})
于 2013-05-17T00:24:34.277 回答
0

这是静态页面的纯 Javascript 解决方案,它将事件侦听器附加到tr并拦截其子级的单击事件。的内容tr可以是动态的。

Array.prototype.forEach.call(document.getElementsByTagName("table"), function (table) {
    Array.prototype.forEach.call(table.getElementsByTagName("tr"), function (tr) {
        tr.addEventListener("click", function (evt) {
            var children = this.children,
                length = children.length;

            if (length && children[length - 1] === evt.target) {
                alert(children[0].firstChild.nodeValue);
            }
        }, false);
    });
});

jsfiddle 上

用 jquery 术语来说是

$("table tr").on("click", function (evt) {
    var target = $(evt.target);

    if (target.parent().children().last().get(0) === evt.target) {
        alert(target.parent().children().first().text());
    }
});

jsfiddle 上

或者不是为每个tr元素设置一个事件侦听器(“冒泡”),您还可以使用事件“冒泡”并将其一直移动到document(jquery 调用事件委托,jquery.on的那些),这将允许相当如果您在表中添加和删除行,甚至是整个表,则为动态系统。

document.addEventListener("click", function (evt) {
    var target = evt.target;

    if (target.nodeName === "TD" && target.parentNode.children[target.parentNode.children.length - 1] === target) {
        alert(target.parentNode.children[0].firstChild.nodeValue);
    }
}, false);

在 jsfid文件

或者使用 jquery 委托

$(document).on("click", "td", function (evt) {
    var target = $(evt.target);

    if (target.parent().children().last().get(0) === evt.target) {
        alert(target.siblings().first().text());
    }
});

jsfiddle 上

于 2013-05-17T00:43:45.607 回答