微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-如何知道表中单击的元素?

我正在尝试让元素在HTML表的TR中单击.如果单击TR中的“选择”输入,则CurrentTarget字段返回“ TR”,而OriginalTarget返回“ SELECT”.

这是我的HTML:

<table id="0" class="tableEdit">
    <thead>
        <tr>
            <th name="id"></th>
            <th name="name">Descripción Registro</th>
            <th name="select">Fecha</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1651</td>
            <td>Name</td>
            <td>
                <select name="selectName">
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </td>
        </tr>
    </tbody>
</table>

这是我的代码

            //trb is each TR element of the line
    $(trb).click(function(elem){
        if (elem.currentTarget && elem.currentTarget.tagName.toLowerCase() === "tr" && !isInput(elem.originalTarget)){
            if (editableRow){
                var rowTrigger = editableRow.find("button").get();
                $.editRow(rowTrigger,$.tableEditor.vault.getTableID($("#" + id)));
            }
    });

这段代码在我的Web浏览器上运行良好,但是在移动设备上却无法运行,因为OriginalTarget返回未定义.有什么方法可以在移动网络浏览器上获得原始目标?

解决方法:

您实际上并没有说过什么是trb,但是听起来它可能是表中的一组tr元素.

您正在寻找的是elem.target.这是被单击的最上面的元素,是启动事件的元素. (FWIW,我不会将传递给事件处理程序的参数称为elem,它是一个事件,而不是元素.)

例如,如果您有:

<table>
<tbody>
<tr>
<td><span><strong>Click me</strong></span></td>
</tr>
</tbody>
</table>

…和这个:

$("tr").click(function(e) {
    console.log(e.target.tagName);
});

…然后单击文本“单击我”,您将看到

STRONG

…在控制台中.

旁注:如果您想知道单击了哪个单元格或行,则可以将closest与之配合使用,例如:

var $td = $(e.target).closest('td');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐