2009-11-12 20 views
5

私はプロトタイプとMootoolsの両方のAJAXスクリプトを使用するページを持っています。プロトタイプ/ Mootoolsコンフリクトの質問

プロトタイプのMootoolsがはるかに多いので、プロトタイプにjQueryの$j = jQuery.noConflict();と似た機能があり、プロトタイプの$エイリアスを再定義できますか?

ありがとうございます!

答えて

8

は無競合モードがあります。残念なことに、Prototypeはそうではありません。つまり、$はPrototypeにバインドする必要があります。

ドルサ安全モードを有効にするには、MooToolsのバージョンをアップグレードし、Prototypeの後にMooToolsを含めるようにしてください。

<script type="text/javascript" src="prototype.js" /> 
<script type="text/javascript" src="mootools.js" /> 

このようにした後、$はPrototypeに結合する。 MooToolsスクリプトでは、document.idへの参照をすべて$に置き換えてください。

// Before 
var X = new Class({ 
    initialize: function(element){ 
     this.element = $(element); 
    } 
}); 


// After 
var X = new Class({ 
    initialize: function(element){ 
     this.element = document.id(element); 
    } 
}); 

か、クロージャを使用することができますドルセーフモードの

(function(){ 

    var $ = document.id; 

    this.X = new Class({ 
     initialize: function(element){ 
      this.element = $(element); 
     } 
    }); 

})(); 

詳しい情報はMooToolsのブログで提供されています:

http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/

+0

おかげで、Iプロトタイプがこれと似たものを望んでいたのは、それがはるかに小さな実装であったからです。自然に、決してとても幸運ではありません。 – Marty

+1

200kbの(圧縮された)ライブラリが欲しくないと私は同意しますが、MooToolsの67kb圧縮は非常に尊敬されます。サイズに基づいて選択するのではなく、機能性に基づいて選択します。 MooToolsはPrototypeのすべてのことを行い、Prototypeを削除することをお勧めします。また、ウェブサイトを使用してMooToolsのカスタムビルドを行い、必要のないものを削除してください。 –

3

私は本当に簡単な解決策があります:MooToolsは最新バージョンの

<script src='mootools.js'></script> 
<script>$moo = $; delete ($);</script> 
<script src='prototype.js></script> 



<script> 

(function ($){ 


//here you can use $ of moo tools 

})($moo); 


//here you can use $ of prototype 


</script>