2011-06-12 117 views
5

我想要测试是否对当前的jQuery存在.prop()方法包括(用于兼容性原因)通过:jQuery的.prop()的兼容性

if(typeof $.prop === 'function') 

我期望的是,上述条件是用于truejQuery >= 1.6falsejQuery < 1.6,我可以从docs

明白无论如何,在测试的jsfiddle此,导致:

typeof $.prop === 'function'

  • truejQuery >= 1.6
  • falsejQuery < 1.6 and jQuery > 1.3
  • truejQuery <= 1.3

here是提供上述(只需切换jQuery的版本的结果非常非常简单的脚本来看看我已经描述过)。

当我尝试使用那个.prop()与jQuery,即1.3我得到.prop is not a function错误。 同样的问题occours也在jsfiddle之外测试。 这是正常的行为吗? 如何才能真正测试.prop()是否可用?

感谢

+0

我没有测试它FF4 ,Safari5和Chrome12 – Dalen 2011-06-12 17:36:09

+0

对不起误解 – 2011-06-12 17:36:48

+0

为什么支持1.3。这真的很老。 – Raynos 2011-06-12 17:36:58

回答

7

alert(typeof $.fn.prop === 'function')

你想检查jQuery开发原型,住在$.fn.prop方法。这在1.3中是错误的。

另外我想避免的jQuery版本特征检测,而是支持某个特定的版本(及以上)。

4

你检查一个静态方法的存在。

您需要通过编写$.fn.prop$.fn$.prototype相同)检查实例方法。

+0

它与'$ .fn.init.prototype'相同 – Raynos 2011-06-12 17:39:58

6

我所做的,是建立道具兼容的功能,jQuery的版本,不使用道具:

(function($){ 
    if (typeof $.fn.prop !== 'function') 
    $.fn.prop = function(name, value){ 
     if (typeof value === 'undefined') { 
      return this.attr(name); 
     } else { 
      return this.attr(name, value); 
     } 
    }; 
})(jQuery); 

您可以测试该代码:http://jsfiddle.net/JtK2Q