jquery - 当目标与选择器不匹配时触发 jQuery 事件

标签 jquery events

我有以下标记:

<table>
    <tbody>
        <tr>
            <td>
                <a href="javascript:void(0)" class=expand>click me</a>
                <span>some other content</span>
            </td>
            <td>
                click me too
            </td>
        </tr>
    </tbody>
</table>

我正在将行的点击处理程序附加到表中:

$('table').on('click', 'tr :not(".expand")', function(evt) {
    if (! $(evt.target).is(selector)) {
        console.log('event is firing even though target doesnt match the selector!!!');
    } else {
        console.log('event is firing as expected');
    }
});

var selector = $('table').data('events').click[0].selector;

JSFiddle

我希望事件仅在其源自与 tr :not(".expand") 匹配的元素时触发选择器(条件的 else 部分),但事件无论如何都会触发。

如何将回调绑定(bind)到 <table> 处的事件元素,使其仅在不是 .expand 时触发被点击的元素?

说明:如果用户单击 <span>some other content</span>,事件处理程序仍应执行。

最佳答案

我相信你想要这个:

$('table').on('click', 'tr td:not(:has(".expand"))', function(evt) {
    console.log("Event only fires when clicking something that doesn't contain an expando");
});

var selector = $('table').data('events').click[0].selector;

jsFiddle

关于jquery - 当目标与选择器不匹配时触发 jQuery 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421073/

相关文章:

javascript - 通过使用 jquery 在多个 anchor 中单击 anchor 来获取 href 值

javascript - 使用 jQuery 的选项卡不透明度

c++ - QTimer 自行停止和启动

javascript - 如何在 JavaScript 或调试中找到 DOM 节点上的事件监听器?

javascript - 如何在 JQuery UI Draggable 元素的启动事件处理程序期间使 css 位置更改生效?

javascript - 防止用户篡改 View 的增量代码

javascript - 渲染时显示事件量表内半径中的轨迹值总和

javascript - Highcharts - 当父容器较小时,每月在日期时间 x 轴上显示

asynchronous - F# 事件在异步工作流中不起作用

javascript - Angularjs - 广播事件被双重触发