jQuery .prop() 兼容性

发布于 2024-11-14 20:49:55 字数 957 浏览 6 评论 0原文

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

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

我希望上述条件为 true jQuery >= 1.6false 对于 jQuery = 1.6 1.6 正如我从 docs 中可以理解的

,无论如何,在 jsfiddle 上测试它会导致:

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

  • truejQuery >= 1.6
  • false 当 <代码>jQuery < 1.6 与jQuery> 1.3
  • truejQuery <= 1.3

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

当我尝试将 .prop() 与 jQuery ie 1.3 一起使用时,我收到 .prop is not a function 错误。 在 jsfiddle 外部测试时也会出现同样的问题。 这样的行为正常吗? 我如何才能真正测试 .prop() 是否可用?

谢谢

I'm trying to test if the .prop() method exists on the current jQuery included (for compatibility reason) via:

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

I would expect that the condition above is true for jQuery >= 1.6 and false for jQuery < 1.6 as I can understand from the docs

Anyway, testing this on jsfiddle, leads to:

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

  • true when jQuery >= 1.6
  • false when jQuery < 1.6 and jQuery > 1.3
  • true when jQuery <= 1.3

here is the very very simple script which provide the results above (just switch jQuery version to see what I've described).

When I try to use that .prop() with jQuery i.e. 1.3 I get the .prop is not a function error.
The same problem occours also testing outside jsfiddle.
Is it normal such a behavior?
How could I truly test if .prop() is available?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

把昨日还给我 2024-11-21 20:49:56

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

您想要检查位于 $ 上的 jQuery 原型上的 .prop 方法。 fn。这在 1.3 中是错误的。

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

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

You want to check for the .prop method on the jQuery prototype which lives on $.fn. This is false in 1.3.

Also I would avoid feature detection for jQuery versions and instead support a particular version (and up).

无声静候 2024-11-21 20:49:56

我所做的是为 jQuery 版本构建一个兼容的 prop 函数,它不使用 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);

你可以测试这段代码: http://jsfiddle.net/JtK2Q

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

小红帽 2024-11-21 20:49:56

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

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

You're checking for the existence of a static method.

You need to check for the instance method by writing $.fn.prop ($.fn is the same as $.prototype).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文