jQuery UI和Prototype冲突

我在Perl的网站上添加了一个新表单(不是我的选择)。 有很多html自动生成表单来创建一致的外观。 我的问题在于遗产在整个页面中使用原型进行各种操作(包括加载)。 但是我想使用jQuery,主要是来自jQuery UI的日期选择器。 我可以通过使用jQuery.noConflict();来避免冲突。 但我仍然得到一个错误,因为jQuery日期选择器javascript中的一行代码。

inst.dpDiv.zIndex($(input).zIndex()+1); 

看看它是如何仍然包含$符号,原型试图处理但不能。 有没有人对我有任何解决方案? 我正在使用jQuery 1.5和jQuery UI 1.8.6。

总结:我无法删除prototype.js,我更喜欢使用jQuery UI datepicker和jQuery UI datepicker不处理jQuery.noConflict()。

谢谢

编辑只有当我尝试单击按钮显示日期选择器时才会发生这种情况。 来自萤火虫:

 $(input).zIndex is not a function inst.dpDiv.zIndex($(input).zIndex()+1); datepicker.js (line 651) 

编辑编辑更新到jQuery UI 1.8.9不会改变问题。

编辑编辑编辑单击按钮以显示日期选择器时会出现此问题。 所以在加载时,datepicker设置得很好。 更改脚本的顺序不起作用,以下代码的任何变体也不起作用。

 (function($) { $(function() { // more code using $ as alias to jQuery }); })(jQuery); 

    

jQuery会将自己传递给内部函数。 只需指定$作为参数,函数内部的$将引用jQuery对象。 jQuery UI datepicker也是如此。 确保按上述顺序包含库,首先是Prototype。

我不认为有任何优雅的解决方案。 我认为你有两种选择 – 它们都涉及搜索/替换,如果你精通perl,这应该不是什么大不了的事。

  1. 用datepicker库中的jquery()替换$ -function并添加一个jQuery.noConflict()

  2. 用$$$(或其他名称)及其所有实例替换原型中的$ -function

如果您正在删除原型,第二个选项可能是您最好的选择。 它不那么突兀 – 但它又取决于原型中的代码量。 我有兴趣看看是否有人有任何其他想法。

感谢所有的回复。 我最终无法弄清楚如何解决冲突。 所以我从表单中删除了jQuery UI datepicker。 再次感谢。

有同样的问题。 只需在原型后加载jquery库,然后添加nOConflict。 使用prototype和jquery的示例:

      

我有一个问题,我在jQuery库中加载,但动态加载prototype.js; 当我来使用jQuery.noConflict()时,它并没有解决我遇到的问题。 $ .noConflict()也没有工作原型.js不知道如何处理这个,所以我发现工作的修复是:

 $ = jQuery; 

这有效地将$重新分配给jQuery。

希望它可以帮助你解决我在制作这个简单发现时所经历的痛苦。

我不认为你的问题是由图书馆冲突引起的。 我有同样的问题,我只运行jQuery而不是任何其他库。 datepicker需要运行jQuery UI核心JS文件(在datepicker文件头中编写)。 确保在datepicker文件之前添加它,一切都应该没问题。

你显然仍然需要jQuery.noConflict()来确保两个库不冲突。