【问题标题】:How to solve jQuery conflicts on IE using jQuery.noConflict()?如何使用 jQuery.noConflict() 解决 IE 上的 jQuery 冲突?
【发布时间】:2011-03-04 17:12:45
【问题描述】:
我们有一个网站,希望我们的客户使用 iFrame 将其嵌入到他们的网站中。不幸的是,它适用于所有浏览器,除了可怜的 IE 6、7 和 8。
问题是我们得到:
对象不支持此属性或方法。
在我们的 jQuery 中第一次提到 $。我们知道为什么会发生这种情况,显然这是由于与我们客户站点上现有的 JS 库发生冲突。但是,我们不知道如何解决它。
这是一个使用 jQuery 1.4.2 的 Rails 3 应用程序。我们不知道将jQuery.noConflict() 调用在哪里。此外,我们很困惑这会对我们正在做的众多 jQuery 插件产生什么影响。任何人都可以提供任何见解吗?
【问题讨论】:
标签:
jquery
ruby-on-rails-3
jquery-plugins
【解决方案1】:
noConflict() 放弃对$ 的控制权,以便其他库可以使用它。
我会用这段代码包装你所有的 jQuery 代码。
$.noConflict();
jQuery(document).ready(function($) {
// Code that uses jQuery's $ can follow here.
});
这将有效地将$ 传递回您的就绪函数,以便您可以按预期使用它。
【解决方案2】:
将jQuery.noConflict(); 作为您在页面上运行的第一个 JS 语句(加载您的库之后)。
例如
$(document).ready(function() {
jQuery.noConflict();
});
【解决方案3】:
1
$something=jQuery.noConflict();
now $something becomes $,
例如:
$j=jQuery.noConflict();
$j('#anElement').addClass('red');
2对于处理插件,使用所有插件使用jQuery代替$
如果有任何插件使用$而不是这个
//your plugin file
(function(){
$=jQuery;
})();