Javascript 使用需要不同jQuery版本的控件
我试图使用一个Apycom菜单,要求jquery1.3.2与flexigridforrails在相同的页面上,flexigridforrails依赖于jquery1.2.3。为了增加混乱,我试图包括Rails的“prototype.js”并使用它。这是我的订单:Javascript 使用需要不同jQuery版本的控件,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我试图使用一个Apycom菜单,要求jquery1.3.2与flexigridforrails在相同的页面上,flexigridforrails依赖于jquery1.2.3。为了增加混乱,我试图包括Rails的“prototype.js”并使用它。这是我的订单: <%= javascript_include_tag :defaults %> <%= yield(:head) %> <script src="/javascripts/jquery.js" type="
<%= javascript_include_tag :defaults %>
<%= yield(:head) %>
<script src="/javascripts/jquery.js" type="text/javascript"></script>
<script src="/javascripts/flexigrid.js" type="text/javascript"></script>
<script type="text/javascript">
jq123 = jQuery.noConflict(true)
</script>
<script src="/javascripts/menu/jquery.js" type="text/javascript"></script>
<script src="/javascripts/menu/menu.js" type="text/javascript"></script>
<script type="text/javascript">
jq132 = jQuery.noConflict(true)
</script>
因此,我的菜单不起作用(至少重要的部分不起作用)。我在这个页面上没有Flexigrid,所以我无法证明它是否有效。我看到了这个答案(),但它并不完全有效。我的本地JavaScript工作正常,但jQuery插件似乎并不满意
有什么建议吗?Menu.js假定jQuery函数被调用为
$
。使用jQuery.noConflict
时,需要将对jQuery函数的引用更新为您命名的名称(在本例中为jq123
或jq321
) @maghtye指出,menu.js文件错误地引用了$object。解决这个问题的一个简单方法是打开menu.js文件并将内容包装在这个函数调用中
(function($) {
// $ is now equal to jq321
// menu.js stuff
})(jq321);
这并不完全奏效。他们还有一个函数调用jQuery,当你这样做时,它会做一些未定义的工作。我使用了模糊的Javascript,所以我需要为菜单付费,但有一行:var$=jQuery,我改为var$=jq132,现在一切都很好。谢谢
(function($) {
// $ is now equal to jq321
// menu.js stuff
})(jq321);