3

例如,假设我们要检查“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 ,它将是未定义的)和它在“代理”命名空间下有一个事件。

有没有更好的方法来做到这一点而不会引发错误?如果我能做这样的事情会很棒:

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

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

4

1 回答 1

1

只需相应地加强真实性检查:

var data_events = $(this).data('events');
if(!data_events || data_events.proxy.length === 0) {
    // Do something if there are no proxy events
}
于 2012-09-05T21:23:41.333 回答