2012-04-27 50 views
-1

試圖解決prototype.js和jQuery.js之間的$衝突,因爲我需要使用需要jQuery庫的jSlider。使用jslider原型和noConflict時jQuery衝突

我在的jquery.js的末尾添加jQuery.noConflict()文件,然後在文件jslider.js我改變$ ._ roundNumber到jQuery._roundNumber。但我仍然得到一個錯誤,說jQuery._roundNumber不是一個函數。請幫忙。

+0

我們需要相關副本代碼才能回答你的具體問題。有很多不同的變量會導致這種衝突。 – freshnode 2012-04-27 09:52:28

回答

0

固定。剛剛意識到的原因jQuery.noConflict()不工作是因爲jQuery已經被在我,包括我的當前頁面的模板頁面中使用這樣的問題是雙重的:

  1. 「$() '這是默認jQuery選擇用的prototype.js其中掛毯默認包含衝突

  2. 當我添加jQuery.noConflict()在我的jquery.new.js文件的末尾,然後嘗試使用‘jQuery的()’作爲選擇器,它不工作,或者是因爲不同版本的jquery(我們稱之爲jquery.old.js)已經包含在模板頁面中(我包括在當前頁面中)。爲了讓jquery.old.js與prototype.js一起工作,以前的開發人員已經使用jQuery.noConflict(),所以'jQuery()'選擇器也已經被使用。

修復:我加$ J2 = jQuery.noConflict()在jquery.new.js文件的末尾,然後我用 '$ J2()' 在我的新的庫選擇一個使用JSlider的和我還修改了jSlider.js文件中的選擇器。現在一切正常。

我正在項目中留下jquery.new.js和jquery.old.js文件(而不是僅僅使用一個),因爲使用舊jquery版本的模板頁面在整個站點都被使用(我不'在改變這個之後,我想要測試整個網站),而我添加的新組件需要新版本的jquery(jquery.new.js)文件。是的,我知道最好在我的html頁面的頂部添加無衝突命令,而不是在js庫文件的末尾添加 - 會在堆棧溢出的此更新之後更改此更改:)

0

這裏是整合原型和jQuery的例子...可能檢查你做了正確的事情或不。

<script src="prototype.js"></script> 
<script src="effects.js"></script> 
<script src="jquery.js"></script> 



jQuery.noConflict(); 
    jQuery(document).ready(function($){ 
     jQuery("a").click(function(){ 
      Effect.Shake('shake_demo'); 
     }); 
    }); 





    <div id="shake_demo" style="width:150px; height:40px; background:#ccc; text-align:center;"> 
     <a href="#" style="line-height:40px;">Click me to shake!</a> 
    </div> 

現在四捨五入的數量,您可以使用此代碼:

var txt=jQuery('#txtBox').val()); 
var amt = parseFloat(txt); 
    alert(amt.toFixed(2); 

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number/toFixed