0

我们的项目在 jquery 1.3.2 上运行,是的,一个非常旧的版本,我知道。无论如何,我们现在不打算升级它。我们现在只需要使用 jquery选择的插件(下载链接 - https://github.com/harvesthq/chosen),它至少需要 jquery 1.4。因此,我按照以下解决方案在同一页面上加载两个版本的 jquery -

https://stackoverflow.com/a/1566644/351903

但我无法在较新版本的 jquery 上调用 selected 。这是我所做的 -

1.在jquery加载部分

<script type="text/javascript" src="/js/jquery.js"></script>

<!-- Added for using jQuery chosen plugin -->
<script type="text/javascript" src="/js/jquery-1.4.min.js"></script>
<script type="text/javascript">
    var jQuery_1_4 = $.noConflict(true);
</script> 

注意 - 我没有为旧版本的 jquery 编写以下内容,因为我不想替换我写过类似内容$("something").somefunc()的任何地方jQuery_1_3_2("something").somefunc()-

<script type="text/javascript">
var jQuery_1_3_2 = $.noConflict(true);
</script>

2.然后,在插件调用部分

<link rel="stylesheet" type="text/css" href="/css/chosen.css"/>
<!--  <script type="text/javascript" src="/js/jquery.chosen/chosen.jquery.min.js"></script> -->
<script type="text/javascript" src="/js/jquery.chosen/chosen.jquery.js"></script>
<script type="text/javascript">
jQuery_1_4(document).ready(function() 
{
    jQuery_1_4("select#user_id").chosen();  //Trying to call chosen on the newer version of jquery
});
</script>

但我收到了这个错误jQuery_1_4("select#user_id").chosen is not a function

然而,这工作正常 - alert("see"+jQuery_1_4("select#user_id").attr("id"));

所以,问题似乎只是在使用插件时,可能我必须在插件代码中做一些调整,可能是用?替换一些$s jQuery_1_4但这听起来不太好,我不确定什么是正确的方法。

4

2 回答 2

0

在包含 jQuery 的第二个版本之前调用 noConflict()

于 2012-02-06T10:11:33.940 回答
0

如果您想将旧版本保留为默认值,则应var jQuery = $.noConflict(true);在加载旧版本后立即执行。但是,您仍然需要检查您的$("something").somefunc()通话

于 2012-02-06T10:18:57.567 回答