【问题标题】:jQuery -prototype conflictjQuery - 原型冲突
【发布时间】:2010-11-01 13:10:48
【问题描述】:

我正在使用prototype和script.aculo.us的组合在我的asp.net页面中实现灯箱效果。我的页面中也包含jquery。我的页面中有几个DIV标签,但是在包含之后页面顶部的原型文件,我无法使用 jquery 读取我的 javascript 中的 div

var div = $("#divLeftSideModelsList"); 
alert(div)

给我一​​个错误,说对象为空 但是

var div = document.getElementById("divLeftSideModelsList")

正在给我这个对象。

这是因为 jQuery 和其他框架之间存在一些冲突吗?

请指教

【问题讨论】:

  • 这个问题你解决了吗?您需要任何进一步的帮助吗?或者您可以将问题标记为已回答吗?

标签: jquery prototypejs conflict


【解决方案1】:

奇怪的错误。不管怎样,prototype 和 jQuery 都重新定义了全局变量 $。

请阅读this 了解 jQuery 如何与其他库完美配合。

它基本上说调用 jQuery.noConflict() 只留下 $ 变量供其他库使用

【讨论】:

    【解决方案2】:

    您应该在noConflict mode 中使用jQuery。然后用jQuery()代替$()

    【讨论】:

      【解决方案3】:

      阅读:http://docs.jquery.com/Using_jQuery_with_Other_Libraries

      展示了很好的例子:)

      重写 $-函数

      但是,您可以在 jQuery 和其他库都加载后的任何时候调用 jQuery.noConflict() 来覆盖该默认值。例如:

       <html>
       <head>
         <script src="prototype.js"></script>
         <script src="jquery.js"></script>
         <script>
           jQuery.noConflict();
      
           // Use jQuery via jQuery(...)
           jQuery(document).ready(function(){
             jQuery("div").hide();
           });
      
           // Use Prototype with $(...), etc.
           $('someid').hide();
         </script>
       </head>
       <body></body>
       </html>
      

      这会将 $ 恢复到其原始库。您仍然可以在应用程序的其余部分中使用“jQuery”。

      此外,还有另一种选择。如果你想确保 jQuery 不会与另一个库发生冲突——但你想要一个短名称的好处,你可以这样做:

       <html>
       <head>
         <script src="prototype.js"></script>
         <script src="jquery.js"></script>
         <script>
           var $j = jQuery.noConflict();
      
           // Use jQuery via $j(...)
           $j(document).ready(function(){
             $j("div").hide();
           });
      
           // Use Prototype with $(...), etc.
           $('someid').hide();
         </script>
       </head>
       <body></body>
       </html>
      

      【讨论】:

        【解决方案4】:

        此代码是否有效:

        var div = jQuery("#divLeftSideModelsList");
        alert(div);
        

        【讨论】:

          猜你喜欢
          • 2011-03-08
          • 2012-01-09
          • 2011-01-29
          • 2010-09-13
          • 1970-01-01
          • 2014-03-10
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          相关资源
          最近更新 更多