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,这应该不是什么大不了的事。
-
用datepicker库中的jquery()替换$ -function并添加一个jQuery.noConflict()
-
用$$$(或其他名称)及其所有实例替换原型中的$ -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()来确保两个库不冲突。