检查jQuery方法是否存在

时间:2012-02-27 21:11:50

标签: methods jquery hashchange

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

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

但是我继续在两个支持&的浏览器中得到“未捕获的TypeError:无法调用方法'hasOwnProperty'的未定义”不支持该功能。任何想法?

2 个答案:

答案 0 :(得分:4)

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

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

注意:这实际上会检查该值是否与名称相对应。可以使用显式undefined值定义值,但这两个值可能与您的方案相同

var x = {}
x.test = undefined;
x.hasOwnProperty("test") // true
x.test === undefined // true

答案 1 :(得分:0)

$(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;
}