检查jQuery方法是否存在



我正在尝试检查jQuery是否有一个对窗口对象(如)的.hashchange方法引用

$(window).data('events').hasOwnProperty('hashchange') ?
    $(window).hashchange(hashChange) :
    window.onhashchange = hashChange;

但在支持&不支持该功能。有什么想法吗?

一种方法是查看属性是否只是未定义的

if ($(window).hashchange === undefined) {
  // Not defined
}

注意:这实际上是检查是否根据名称定义了值。可以用显式undefined值定义该值,但对于您的场景,这两个值可能是等效的

var x = {}
x.test = undefined;
x.hasOwnProperty("test") // true
x.test === undefined // true
$(window).data('events') === undefined

因此,它具有属性。


你需要做的是首先确保数据包含一个对象:

var window_data = $(window).data('events');
if(window_data !== undefined){
   window_data.hasOwnProperty('hashchange') ?
    $(window).hashchange(hashChange) :
    window.onhashchange = hashChange;
}
else {
    window.onhashchange = hashChange;
}

相关内容

  • 没有找到相关文章

最新更新