javascript - 如何使用 jQuery 不只选择表中的特定元素?

标签 javascript jquery html css

我有这个 fiddle :http://jsfiddle.net/v9s5ezpb/1/

HTML

<table>
    <tr>
        <td>test1</td>
        <td>test2</td>
        <td><a href="#">test3</a></td>
        <td>test4</td>
        <td>test5</td>
        <td class="no-alert">test6</td>
    </tr>
</table>

CSS

table {
    border: 1px solid #000;
}

table td {
    border: 1px solid #000;
    padding: 10px;
}

JS

$(document).on('click', 'table td:not(.no-alert, a)', function()
{
    alert(1);
});

我希望我的代码在每次单击任何表 TD 元素时都执行一个警告窗口,除了那些具有特定类或具有 anchor 标记的元素。

这怎么可能?

最佳答案

A <td>不能是 <a>但它可以有后代 <a>你可以使用 :has()选择器。

$(document).on('click', 'table td:not(.no-alert, :has(a))', function()...

编辑:更新允许点击<td><a>但不是当<a>是目标

$(document).on('click', 'table td:not(.no-alert)', function(event){
    if(!$(event.target).closest('a').length ){
       // is not click on <a>` tag
    }    
});

二手 closest()检查目标以防<a>有 child 喜欢<i><img>这可能是实际目标

DEMO

关于javascript - 如何使用 jQuery 不只选择表中的特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248036/

相关文章:

javascript - HTML5、 Canvas 和 strokeRect : some lines too narrow and blurry

javascript - 当两个框架具有相同的域 2 级时,使用 JavaScript 的跨域脚本是否有效?

javascript - 将文件流下载为 angularjs 中的文件

javascript - 如何使用 FileSaver.js 保存文本文件

javascript - jquery 的 live 问题

javascript - 调用 querySelectorAll 的 Angular 指令使用 5% 的 cpu

html - CSS 选择器 : element without any its children

javascript - HTML JS 选择默认选项

javascript - 我想根据下拉列表的值更改输入字段的值。但两者应该有不同的值(value)观

javascript - 是否可以用不同颜色的图标更改 recaptcha 图标?