我正在编写一个 jQuery 插件,我希望我的代码能够利用 jQuery UI show(effect, [options], [speed], [callback])
和 hide(effect, [options], [speed], [callback])
函数,允许您使用漂亮的动画显示和隐藏元素。
但是,如果 jQuery UI 不可用,我也希望我的插件能够正常降级,切换回使用基本的非动画 show()
和 hide()
标准 jQuery API 中的函数。
我需要专门测试显示和隐藏功能,因为即使 jQuery UI 可用,它也可能是自定义版本,不包含 Effects 组件。
起初我以为我可以做这样的事情:
if(typeof myelement.show('blind', 'slow') == 'undefined')
{
myelement.show('blind', 'slow');
}
else
{
myelement.show();
}
但这当然行不通,因为即使 UI 不存在,show()
仍然是一个函数,它只是具有不同的签名——所以 typeof
在任何一种情况下都返回 object
。
那么,检查 jQuery UI 是否可用于我的插件的最佳方法是什么?非常感谢任何帮助!
最佳答案
您可以检查这样的效果:
function hasEffect(effect) {
return $.effects && $.effects[effect];
}
然后你可以在任何地方使用它:
if(hasEffect('blind')) {
myelement.show('blind', 'slow');
} else {
myElement.show();
}
//or, you can shorten it further:
//$.fn.show.apply(myelement, hasEffect('blind') ? ['blind','slow'] : []);
You can view a demo here ,选中/取消选中左侧的 jQuery UI,然后单击顶部的“运行”以查看它的运行情况。这是有效的,因为效果是这样声明的:
$.effects.blind = function(o) { ...effecty stuff... };
例如,你可以看到"blind" here .我检查上面代码中的 $.effects
和 $.effects.effect
的原因是你只能下载 some of the effects when you download jQuery UI ,所以这说明了这种可能性。
关于javascript - 如何检查特定的 jQuery UI 函数是否可用,如果不可用则使用其他函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060886/