我正在写一个jQuery插件,我想让我的代码利用jQuery UI show(effect,[options],[speed],[callback])和hide(effect,[回调])函数,该函数可让您以漂亮的动画显示和隐藏元素.
但是,我还希望我的插件在无法使用jQuery UI的情况下正常降级,切换回使用标准jQuery API中存在的基本非动画show()和hide()函数.
我需要专门测试显示和隐藏功能,因为即使jQuery UI可用,它也可能是自定义版本,而没有包含Effects组件.
一开始我以为我可以做类似的事情:
if(typeof myelement.show('blind','slow') == 'undefined')
{
myelement.show('blind','slow');
}
else
{
myelement.show();
}
但是,当然这是行不通的,因为即使没有UI,show()仍然是一个函数,但它具有不同的签名-因此,无论哪种情况,typeof都会返回对象.
那么,检查我的插件是否可用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,因此可以解决这种情况.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。