javascript-如何检查特定的jQuery UI函数是否可用,如果不可用,则使用其他函数?

前端之家收集整理的这篇文章主要介绍了javascript-如何检查特定的jQuery UI函数是否可用,如果不可用,则使用其他函数? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在写一个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,因此可以解决这种情况.

猜你在找的jQuery相关文章