检查是否单击了最后一个元素

时间:2016-03-08 13:53:23

标签: javascript jquery html

我想知道是否点击了td的最后tr。这是我的HTML示例:

<table>
    <tr>
        <td>Foo</td>
        <td>Bar</td>
        <td>Clicked</td>
    </tr>
</table>

这是我目前的javascript代码(不是那样的):

$('table').on('click', 'tr', function(e) {
    if ($(this).find('td').is(':last-child')){
        alert("Last td clicked!");
    }
});

注意:我需要将tr-selector用于其他目的。因此,重要的是,点击是指tr

4 个答案:

答案 0 :(得分:3)

尝试使用tr td:last-child选择器进行以下操作。

&#13;
&#13;
$('table').on('click', 'tr td:last-child', function (e) {
    alert("Last td clicked!");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr>
        <td>Foo</td>
        <td>Bar</td>
        <td>Clicked</td>
    </tr>
</table>
&#13;
&#13;
&#13;

根据更新的问题

更新

&#13;
&#13;
$('table').on('click', 'tr', function (e) {
    if($(e.target).is(':last-child')) {
        alert("Last td clicked!");
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr>
        <td>Foo</td>
        <td>Bar</td>
        <td>Clicked</td>
    </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您不需要.find()。另外,您想检查是否点击了上一个td或者tr?无论哪种方式,你只需这样做:

$('table').on('click', 'td', function(e) {
    if($(this).is(':last-child')){
        alert("Last td clicked!");
    }
});

<强> DEMO

答案 2 :(得分:1)

将事件监听器直接添加到最后一个子级

HTML

<table>
    <tr>
        <td>Foo</td>
        <td>Bar</td>
        <td>Clicked</td>
    </tr>
</table>

的Javascript

$('table').on('click', 'tr td:last-child', function(e) {
    alert("Last td clicked!");    
});

JSFiddle

答案 3 :(得分:1)

此答案假定事件处理程序对所有<td>元素都是通用的,并且想要区分最后一个元素

不更改事件处理程序:

事件对象包含被单击元素的引用。这可以使用。

event对象中的target属性包含实际单击的元素的引用。 jQuery is()可用于检查元素是否是<tr>中的最后一个。

$('table').on('click', 'tr', function(e) {
    console.log($(e.target).is($(this).find('td:last')));
    // OR
    // console.log($(e.target).is(':last-child'));
});

Demo

<td>

上的绑定事件

该事件可以绑定在<td>内的<table>元素上,:last-child选择器可以与is()一起使用,以检查点击的元素是否是最后一个子。

$('table tr').on('click', 'td', function(e) {
    console.log($(this).is(':last-child'));
});

Demo