Vit*_*lva 217 jquery jquery-plugins
有没有办法检查特定的插件是否可用?
想象一下,您正在开发一个依赖于正在加载的另一个插件的插件.
例如,我希望jQuery Validation插件使用dateJS库来检查给定日期是否有效.如果dateJS可用,在jQuery Valdation插件中检测的最佳方法是什么?
Era*_*rin 352
一般来说,jQuery插件是jQuery范围内的命名空间.您可以运行一个简单的检查以查看命名空间是否存在:
if(jQuery().pluginName) {
//run plugin dependent code
}
Run Code Online (Sandbox Code Playgroud)
但是dateJs不是一个jQuery插件.它修改/扩展了javascript日期对象,并没有添加为jQuery命名空间.您可以检查是否存在所需的方法,例如:
if(Date.today) {
//Use the dateJS today() method
}
Run Code Online (Sandbox Code Playgroud)
但是,您可能会遇到API与本机Date API重叠的问题.
rmi*_*lle 93
如果我们正在谈论一个正确的jQuery插件(在那扩展了fn命名空间),那么检测插件的正确方法是:
if(typeof $.fn.pluginname !== 'undefined') { ... }
Run Code Online (Sandbox Code Playgroud)
或者因为每个插件几乎都保证有一些等于true的值,所以你可以使用更短的
if ($.fn.pluginname) { ... }
Run Code Online (Sandbox Code Playgroud)
顺便说一句,$和jQuery是可互换的,因为围绕插件的奇怪外观展示了:
(function($) {
//
})(jQuery))
Run Code Online (Sandbox Code Playgroud)
关闭
(function($) {
//
})
Run Code Online (Sandbox Code Playgroud)
然后立即调用该闭包'传递'jQuery作为参数
(jQuery)
Run Code Online (Sandbox Code Playgroud)
闭包中的$设置为等于jQuery
小智 11
为了检测jQuery插件,我发现使用括号更准确:
if(jQuery().pluginName) {
//run plugin dependent code
}
Run Code Online (Sandbox Code Playgroud)
对于不使用fn命名空间的插件(例如pnotify),这适用于:
if($.pluginname) {
alert("plugin loaded");
} else {
alert("plugin not loaded");
}
Run Code Online (Sandbox Code Playgroud)
这不起作用:
if($.fn.pluginname)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
116753 次 |
| 最近记录: |