javascript - 如何优雅的解决velocity与jquery的冲突
天蓬老师
天蓬老师 2017-04-10 14:25:42
0
4
633

有没有比以下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().......


天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen (4)
巴扎黑

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

    洪涛

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

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

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

      PHPzhong

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

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

        PHPzhong
        ;(function($){ $(function(){ //... }) })(jQuery)
          Neueste Downloads
          Mehr>
          Web-Effekte
          Quellcode der Website
          Website-Materialien
          Frontend-Vorlage
          Über uns Haftungsausschluss Sitemap
          Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!