2017-08-20 207 views
0

我在我的网站上遇到了问题。两个库之间的jQuery冲突

我使用两个jQuery库一个1.5.1和其他3.2.1。 jQuery的最新版本,我使用noConflict模式

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
     var inst = jQuery.noConflict(); 
</script> 

一切正常,但是当客户选择在我的网站石坪方法就显示错误等我的脚本不工作。

enter image description here

但jQuery库3.2.1应在noConflict模式。网站的其他页面没有冲突和错误。

我不知道如何解决这个问题。

感谢

+0

我不确定,但您可能必须将'true'传递给'noConflict'。请参阅文档https://api.jquery.com/jquery.noconflict/中有关使用多个版本的注释(他们不建议这样做),并且在这种情况下可能需要放弃jQuery名称。 – pinkfloydx33

+0

我不知道为什么,但是当我使用它时,它根本不起作用。 – Coddy

回答

0

的jQuery .live()已在1.9版本中删除起。

所以,你必须改变:

.live(events, function) 

应该映射到:

.on(eventType, selector, function) 

下面是引用链接:

http://api.jquery.com/on/

http://api.jquery.com/off/

的页面live()显示了如何转换为on()

http://api.jquery.com/live/

更新时间:

您可以释放的jQuery与noConflict(true)。不过,如果你走这条路,你肯定会想一个别名既不$也不jQuery

var jq = jQuery.noConflict(true); 

或者,你可以这样做:

var jq = $.noConflict(); 

,那么你可以调用jQuery函数与jq

jq('#selector'); 
+0

他使用1.5.1 **和** 3.2.1,因此他期待'live'可用。使用这两个版本使页面工作似乎是问题的关键(而不是如何升级)。根据他们的文档,他可能只需要传递给noConflict。虽然他们不推荐使用多个版本,但它似乎是可能的。 – pinkfloydx33

+0

好的。你是对的。所以你可以传递'true'或者在我更新后的答案中有一个替代方案。 –

+0

我知道live()已被删除,因此我使用了两个jQuery库,其中一个是1.5.1。 我不知道为什么第二个jQuery库抛出错误,它应该是在noConflict模式。而且这种模式在我网站的其他页面上完美运行,除了一页之外。 – Coddy