如何优雅的解决velocity与jquery的冲突

发布于 2022-08-28 12:59:29 字数 492 浏览 9 评论 0

有没有比以下4个方法,更优雅的解决方案?

1、使用jQuery代替$. 如:jQuery.ajax();

缺点:不适合扩展,一旦替换成第三方库时,那就麻烦大发

2、使用jQuery.noConflict。 如:var j = jQuery.noConflict(); j.ajax();

缺点:当使用jQuery的相关插件时,会使得插件失效哦!

3、wrap jQuery中的冲突方法。

如$.ajax()在Velocity中会冲突,则重新定义如下:

function dw(){}

dw.ajax=function(s){ jQuery.ajax(s); } dw.ajax();

方案3基本上解决了1、2中的缺点~~~故推荐使用第三种方法!

4、

定义一个 $JQ="$."

以后可以用 ${JQ}ajax().......


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

深海不蓝 2022-09-04 12:59:29

(function($){})(jQuery);可以解决大部分问题了。

樱花细雨 2022-09-04 12:59:29

十秒钟以内没搜明白什么是velocity,好像这个叫Velocity.js的货怎么看也和jQuery.ajax没关系,先不管了

如果冲突的是$这个名字,那么我认为正道应该就是1了,也就是jQuery.noConfilict(),然后用jQuery,至于第三方库,如果第三方库连这个都不支持,还在依赖window.$的话,我建议你强烈怀疑那个第三方库的作者的水准,尽量踢掉,实在不行就帮他包一层(function($){})(jQuery)也就是一句话的事儿

重头看一遍好像又有点像那个模板引擎的问题了。那么答案应该是在HTML里嵌入JS代码是邪路,醒醒吧少年

青春如此纠结 2022-09-04 12:59:29

还有一种模块化的思想,使用 requirejs 或者 seajs 等模块加载器,将jQuery 和 你所说的 velocity作为一个模块加载即可。

例如 seajs官方快速上手的这个例子:http://seajs.org/docs/#quick-start

紫竹語嫣☆ 2022-09-04 12:59:29
;(function($){
    $(function(){
        //...
    })
})(jQuery)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文