- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我尝试在请求的限制范围内工作并取得了一些进展,但我仍然被锁定。场景如下:
目前,我正在使用一个依赖于 jQuery v1.4.2 的网站。由于我在后端获得的唯一访问权限是能够将内容注入(inject) CMS 驱动的页面,因此我一直在旁加载 jQuery 1.11 以支持一些急需的功能。
快进到昨天,我意识到客户的开发团队现在已经捆绑了 v1.4 和 v1.11,并且没有将 1.11 与 $$ 冲突。
(function() {
$$ = $.noConflict( true ); // Move jQuery 1.11.0 into $$ and restore $ to jQuery 1.4.2
})();
// Use the following self-invoking anonymous function
// when you need to run code that depends on $ = jQuery 1.11
// Otherwise, you can access jquery 1.11 with $$
// (function( $ ){
// inside here $ is jQuery 1.11
// and jQuery 1.4.2 is out of scope
// })( $$ );
由于我的脚本(以及我试图加载到页面中的插件)被注入(inject)到页面中间,而 jQuery v1.4 和 v1.11 位于页面底部,所以我正在加载它方式:
(function checkForJquery() {
if ('$$' in window) {
(function($) {
console.log('success');
$.getScript("myplugin.jquery.js", function() {
$( ".devices").myplugin({
// devices - Array | productID
prop1: ["prod3960155", "prod3640151", "prod3640152", "prod5530141"],
prop2: "attribute",
prop3: "attribute"
});
});
})($$);
} else {
console.log('not yet');
window.setTimeout(checkForJquery, 1000);
}
})();
所以我遇到的问题是,如果我使用:
(function( $ ){})( $$ );
我什么也没得到 - 插件从未初始化。但是,如果我使用:
(function( $ ){})( jQuery );
它确实有效,但我无法访问最新的 API。知道为什么一个会起作用而另一个不起作用吗?
为清楚起见,我使用的是 jQuery 插件样板,它是这样开始的:
;( function( $, window, document, undefined ) { } )( jQuery, window, document );
如有任何见解,我们将不胜感激!
谢谢,乔
最佳答案
您的脚本无法运行的原因不是您对插件的调用,而是创建。
解释一下,下面的代码只使用第二个实例 $$
来搜索类 .devices
的所有元素并启动你的插件 myPlugin
。没有别的。
(function($) {
$(".devices").myplugin();
})($$);
但是您只为旧版本注册了您的插件。当您在上面的代码中使用 jQuery
而不是 $$
时,这就是它起作用的原因。
要在您的插件中使用 $$
jQuery 实例,您也必须在创建时设置它。但是你已经传入了 jQuery
。并且因为您使用了 noConflict
,所以名称 jQuery
属于旧版本的 jQuery。
要将您的插件注册到正确的实例,您还必须在创建时将其更改为 $$
。
;(function($, window, document, undefined){})($$, window, document);
要让您的插件在其他安装上运行,您可以添加 jQuery
作为后备。如果您也在其他网站上使用该插件并且不想每次都更改它,这将有所帮助。
;(function($, window, document, undefined){})($$ || jQuery, window, document);
就是这样。
关于javascript - 使用 noConflict 初始化 jQuery 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508767/
我一直在一个页面上使用 2 个不同版本的 jQuery,并尝试利用“noConflict”。 如果我为每个 jQuery 版本建立一个变量(例如:$a 和 $b),我是否会将所有 $ 替换为“$a”和
我想包含 jQuery,并希望我可以做如下的事情: $.noConflict(); jQuery("#id").click(Alert("Hello World")); End.noConflict
我使用 Prototype JS 作为主要 JS 库,并且我已将最后一个 RedactorJS 与 jQuery 以无冲突模式集成,但我无法启动如下功能: jQuery('#redactor').re
我在我的 Rails 应用程序中使用 Prototype 和 jQuery。为了解决 $ 冲突,我执行以下操作: var $j = jQuery.noConflict(); 这基本上工作正
我尝试使用 jQuery.noConflict() 但在 window.load 函数中我收到“$ 不是函数”错误。 我的代码: jQuery.noConflict(); jQuery(documen
我一直在使用 masonry 在 this site 上收到未捕获的类型错误 Uncaught TypeError: Cannot call method 'apply' of undefined 当
我需要使用第三方提供的一些用 jquery 编写的库。一旦我尝试合并 jquery,我们最终会与代码库中的 $ 符号发生冲突。我能够通过为 $ 符号创建别名来解决冲突,然后也在第三方库中使用别名更新
我在同一个 html 页面上使用 javascript 和 jquery 代码。由于某种原因,jQuery 库阻止我的 native JavaScript 代码正常工作。 我找到了这个页面:jQuer
这个问题已经有答案了: Including More Than One jQuery Versions (2 个回答) 已关闭 9 年前。 我有以下代码, alert($().jquery); //
我加载了多个 jquery 库(无法更改这一点,托管 ecom 平台,对某些内容的访问权限有限),所以我需要避免它们发生冲突。当前代码: $(document).ready(function(
这是我尝试使用下划线运行的小代码: var data = [ {"name": "Romania"}, {"name": "Virgin Island
这是我在页面中使用的详细信息... 当我要并行使用所有三个脚本时, slider 脚本不起作用,所以给我解决方案如何一起使用。 最佳答案 使用jQuery.noConflict()
我有两个文件。 HTML 和 .js 文件。在 code.js 中,我编写了 jquery 代码,在 HTML 文件中,我包含了 code.js,如下所示: jQuery.noConflict(
我正在编写一个书签,我想在其中使用 jquery forms 插件。 我遇到的问题是,可能使用书签的网页可能使用不同的 js 库,该库已经使用“$”。没问题,我可以告诉 jQuery 使用 noCon
我有一行代码导致图像 slider 和自动完成的搜索栏之间发生冲突:$J = jQuery.noConflict(); 我在这一行之前有两个脚本:jquery_1-6-4.js 和 jquery.au
我有以下一段 JavaScript,将从客户的网站引用。它使用 jQuery 1.5,所以我的问题是如果客户端已经加载了一个 jQuery 实例怎么办?或者替代的 JavaScript 库? 我正在使
我正在使用我的 Jquery 应用程序和其他 javascript 库。当用谷歌搜索时,我开始知道 Jquery.noConflict() 是避免与其他库发生冲突的解决方案。出于测试目的,我在 htm
我继承了这样开头的脚本: var $j = jQuery.noConflict(); 但我不知道为什么要这样做。我知道我们正在尝试解决冲突,但我如何才能找到它正在尝试解决的冲突? 如果我们找不到真正的
我正在将 jQuery 脚本动态加载到随机页面中。有时他们支持 jQuery,有时他们有其他库,有时他们根本没有任何库.. 我需要支持所有情况,因此,首先我检查 jQuery 是否已加载。如果不是,我
我有一些在 jQuery 中给出的代码,我对它真的很陌生。我需要使用 jQuery.noConflict() 方法,因为我也在使用 Mootools 框架。我只是不知道应该在哪里替换“jQuery”代
我是一名优秀的程序员,十分优秀!