【问题标题】:jQuery Prototype conflict, alternative solutionsjQuery Prototype 冲突,替代解决方案
【发布时间】:2011-02-12 11:28:32
【问题描述】:

我有一个问题,因为我有条件地包含 IE6 的基于原型的 Lightbox 脚本,因为它比 jQuery 插件工作得更好。

当然这两个库有冲突,但官方的解决方案对我来说并不可行,因为我必须用替代的无冲突语法替换大量的 $。

还有其他适合我的解决方案吗,请记住,在我的情况下,让 Prototype 与 jQuery 很好地协同工作会比其他方式更容易?

【问题讨论】:

  • 有没有机会利用脚本的最佳部分并从中创建一个 jquery 插件?

标签: javascript jquery prototypejs conflict


【解决方案1】:

你可以试试我在开发基于 Prototype 库的应用程序时所做的事情,但我想要一些 jQuery 功能。

jQuery(document).ready(function($)
{
    $("#BoxLabelRange").next('span').mouseenter(function()
    {
        $("#SearchInformation").slideDown();
    })
})

看到我添加到 document.ready 中的参数,美元符号吗?在该函数调用中,您可以毫无问题地使用 jQuery "$" 别名。为我工作。祝你好运!

【讨论】:

    【解决方案2】:

    您是否考虑过看看您说效果不佳的 jQuery 插件(我可以找到几个,可能是这个:http://leandrovieira.com/projects/jquery/lightbox/),并尝试使其在 IE6 中更好地工作?如果需要,请检查 Prototype 版本中针对 IE6 的修复。

    我认为这比尝试让 Prototype 和 jQuery 一起玩更好。

    【讨论】:

      【解决方案3】:

      如果您需要在与jQuery 代码相同的窗口中使用Prototype 代码(您的灯箱内容),您唯一的选择是您不想使用的代码:jQuery.noConflict

      如果您可以将灯箱内容限制为在 iframe 中工作,则您只能在 iframe 中加载 Prototype 而不能在主窗口中加载。但我怀疑这对于你想要做的事情来说太过分了。 :-)

      问题在于 Prototype 没有无冲突选项(目前没有活动计划提供一个),并且它不容易包装在范围函数中以包含符号 (因为你真正关心的是全局符号,而不是原型扩展,jQuery 可以使用)。也就是说,如果您将prototype.js 文件与您的灯箱插件文件结合起来,将整个内容封装在一个作用域函数中,然后寻找全局符号泄漏,您可能可以做到。这将是一项不平凡的练习,尤其是如果您对 Prototype 不太熟悉的话。但是,如果 iframe 的东西是矫枉过正,这可能是从轨道核武器。 :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-22
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 2014-07-14
        • 1970-01-01
        相关资源
        最近更新 更多