jQuery UI 和原型(prototype)冲突

标签 jquery prototypejs conflict

我正在 Perl 中向我们的网站添加一个新表单(不是我的选择)。表单会自动生成大量 html,以创建一致的外观。我的问题在于遗留系统在整个页面(包括加载时)中使用原型(prototype)来处理各种事情。不过我想使用 jQuery,主要是 jQuery UI 中的日期选择器。我可以通过使用 jQuery.noConflict(); 来避免冲突。但由于 jQuery 日期选择器 javascript 中的一行代码,我仍然收到错误。

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

看看它如何仍然包含 $ 符号,该原型(prototype)尝试处理但不能。有人能为我提供解决方案吗?我正在使用 jQuery 1.5 和 jQuery UI 1.8.6。

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

谢谢

编辑 仅当我尝试单击按钮以显示日期选择器时才会发生这种情况。 来自 Firebug :

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

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

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

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

最佳答案

<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    jQuery.noConflict();
    jQuery(function ($) {
        // your code here
        // $ is the jQuery object
    });
</script>

jQuery 会将自身传递给内部函数。只需指定 $ 作为参数,函数内的 $ 将引用 jQuery 对象。 jQuery UI 日期选择器也执行相同的操作。确保按上述顺序包含库,首先是原型(prototype)。

关于jQuery UI 和原型(prototype)冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4999559/

相关文章:

javascript - 整个网站使用 Lightbox

javascript - jQuery 以 noConflict 模式加载,即使作为函数参数传递也无法访问 $

javascript - 未调用 jQuery Ajax 回调。解析器错误

jquery - 我如何推送内容而不是覆盖在面板幻灯片上

javascript - 从 DOM 中移除唯一 ID

javascript - 原型(prototype) javascript 无法正常工作

mysql - 在 mySQL 中使用多个结果更新内连接的值

sql - 由于模糊冲突,无法添加外键约束

javascript - jquery改变div背景图片

jquery - 计算 div + childs 中的 <a> 标签