2012-04-27 82 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