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

时间:2012-09-05 21:20:58

标签: javascript javascript-events jquery

对于Instance,假设我们要检查'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')对象已被创建(如果在读取.data('events')之前没有调用.bind它将是undefined)它在'proxy'命名空间下有一个事件。

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

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

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

1 个答案:

答案 0 :(得分:1)

相应地加强真实性检查:

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