如何检测$函数后面的库?

时间:2010-05-02 20:19:44

标签: javascript jquery prototypejs

我正在开发一些应该与Prototype.js或JQuery一起使用的JavaScript,因此我需要一些方法来确定使用的主库是什么。我怎么能这样做?

6 个答案:

答案 0 :(得分:19)

您可以像这样检查jQuery:

if (window.$ === window.jQuery)

答案 1 :(得分:5)

好吧,你可以检查是否存在jQuery:

if(window.jQuery !== "undefined")
{
    // jQuery Yay!
}

然后将其分配给$

if(window.jQuery === window.$)
{
    // jQuery Yay!
}

答案 2 :(得分:3)

jQuery noconflict可以提供帮助吗?然后,您可以将jQuery用于jQuery,将$用于原型。

答案 3 :(得分:3)

@SLaks@Chacha102适合检测jQuery,但是如果你想确保如果$函数不是来自jQuery,来自PrototypeJS,你可以:

​if (typeof  $ == 'function'​​) {
  if ($.fn && $.fn.jquery) { // $.fn.jquery contains the version number
    // jquery
  } else if (window.Prototype && Prototype.Version) {
   // prototype
  }
}​

答案 4 :(得分:1)

  

我正在开发一些应该与Prototype.js或JQuery一起使用的JavaScript,因此我需要一些方法来确定使用的主库是什么。我怎么能这样做?

你的问题含糊不清,我有两个明显的含义,所以我会回答这两个问题。

如果你的意思是你想要编写代码,无论是否使用了jQuery或Prototype.js都可以使用,答案是编写代码可以很容易地工作,而不管已经或将来的库是什么,加载。所以没有必要发现使用了哪一个。

如果你的意思是要写两个单独的脚本,一个用于jQuery,一个用于Prototype.js,那么,根据你“检测”哪一个,你将加载一个脚本或另一个,然后你基于你的代码在一个非常糟糕的架构上。这些库都不支持特别广泛的浏览器选择,并且每当新版本出现时都需要更新,即使是他们支持的“流行”版本也是如此。

尝试使用单独的脚本支持两者都会导致持续的维护问题 - 第二次。或者也许这就是你的意图。

-

Rob

答案 5 :(得分:0)

编写它而不依赖于任何库,它应该可以正常使用jQuery和Prototype;)

说真的,这些库的要点之一是避免为每个浏览器编写每行代码的三种不同变体?编写代码以尝试适应多个库似乎很愚蠢。

无论如何,查看这两个库的文档大约5秒钟应该会给你一个关于jq $将具有哪些pt $属性的提示。这表明你并没有真正费心去研究框架之间的差异(这显然是将它们区分开来的最佳方式,对吧?)。你确定你知道自己要做什么吗?

正如几位提到的那样:

var whosThatDollarSign = typeof window.$=='undefined' ? 'none' : (window.$==window.jQuery ? 'jQuery' : 'not jQuery')