javascript - 检查 JQuery 对象是否在命名空间下有事件的优雅方法

标签 javascript jquery jquery-events

例如,假设我们要检查 this 是否在命名空间代理下有任何事件;我目前做的:

// 'this' is not a DOM element
if ($($(this).data('events')).length === 0 || $($(this).data('events').proxy).length === 0) {
    // Do something If there are no events
}

我现在就是这样做的,以确保创建了 .data('events') 对象(如果在读取 之前没有调用 .bind .data('events') 它将是未定义的)并且它在 proxy 命名空间下有一个事件。

有没有更好的方法来做到这一点而不抛出错误? 如果我可以做类似的事情就太好了:

if($(this).data('events').proxy.length === 0) {
    // Do something if there are no proxy events
}

但是,如果没有任何东西绑定(bind)到this,代码片段将抛出错误,因为.data('events')将是未定义的,因此不会有 .proxy 访问器。

最佳答案

相应地加强真实性检查:

var data_events = $(this).data('events');
if(!data_events || data_events.proxy.length === 0) {
    // Do something if there are no proxy events
}

关于javascript - 检查 JQuery 对象是否在命名空间下有事件的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289984/

相关文章:

javascript - Jquery 中的奇怪错误?意外的标记

javascript - 带有内联 block 的无限滚动幻灯片?

javascript - 仅使目标 li 在字段更改时消失/重新出现?

javascript - 滑动条触发器不起作用(又名滑动条)

javascript - 如何从数据库中回显 If 语句

javascript - IE7 上的 jquery.ui.autocomplete.js 问题

javascript - 单击父div时如何在 anchor 上触发单击事件

javascript - 按键事件退出函数

javascript - jQuery 中的隐藏/显示功能出现问题

javascript - 这是数据绑定(bind)后 Kendo 网格中的最后一个事件