4

我正在尝试通过以下方式测试该.prop()方法是否存在于当前包含的 jQuery 中(出于兼容性原因):

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

我希望上面的条件是trueforjQuery >= 1.6falsefor正如我从文档jQuery < 1.6中可以理解的那样

无论如何,在 jsfiddle 上对此进行测试会导致:

typeof $.prop === 'function'是:

  • true什么时候jQuery >= 1.6
  • false什么时候jQuery < 1.6 and jQuery > 1.3
  • true什么时候jQuery <= 1.3

是提供上述结果的非常非常简单的脚本(只需切换 jQuery 版本即可查看我所描述的内容)。

当我尝试将它.prop()与 jQuery 即 1.3 一起使用时,我得到了.prop is not a function错误。同样的问题也发生在 jsfiddle 之外的测试中。这样的行为正常吗?我怎样才能真正测试是否.prop()可用?

谢谢

4

3 回答 3

6

What I did, is build a compatible function for prop, for jQuery versions, which doesn't use prop:

(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);

You can test this code: http://jsfiddle.net/JtK2Q

于 2011-12-08T10:25:20.873 回答
6

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

您想检查.propjQuery 原型上存在的方法$.fn。这在 1.3 中是错误的。

此外,我会避免对 jQuery 版本进行功能检测,而是支持特定版本(及更高版本)。

于 2011-06-12T17:37:57.390 回答
4

您正在检查是否存在静态方法。

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

于 2011-06-12T17:37:11.667 回答