尝试解决prototype.js和jQuery.js之间的$冲突,因为我需要使用需要jQuery库的jSlider。
我在jquery.js文件的末尾添加了jQuery.noConflict(),然后在jslider.js文件中我将$ ._ roundNumber更改为jQuery._roundNumber。然而,我仍然得到一个错误,说jQuery._roundNumber不是一个函数。请帮忙。
答案 0 :(得分: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
答案 1 :(得分:0)
固定。刚刚意识到jQuery.noConflict()无法正常工作的原因是因为jQuery已经在我当前页面中包含的模板页面中使用,所以问题有两个:
'$()'这是默认的jQuery选择器与prototype.js冲突,Tapestry默认包含
当我在jquery.new.js文件的末尾添加了jQuery.noConflict()然后尝试使用'jQuery()'作为选择器它不起作用,因为不同版本的jquery(让我们调用这个jquery.old.js)已经包含在模板页面中(我在当前页面中包含了这个页面)。为了让jquery.old.js与prototype.js一起使用,之前的开发人员已经使用了jQuery.noConflict(),因此'jQuery()'选择器也已被采用。
修复:我在jquery.new.js文件的末尾添加了$ j2 = jQuery.noConflict()然后我在使用jSlider的新库中使用了'$ j2()'选择器我还修改了jSlider.js文件中的选择器。一切都运作良好。
我将jquery.new.js和jquery.old.js文件留在项目中(而不是只使用一个)因为使用旧的jquery版本的模板页面遍布整个站点(我不是想要在更改之后测试整个站点)而我正在添加的新组件需要新版本的jquery(jquery.new.js)文件。是的,我知道最好在我的html页面顶部而不是在js库文件的末尾添加无冲突命令 - 在堆栈溢出更新后会更改:)