gpt4 book ai didi

javascript - jquery noConflict : Assert my Understanding 的用法

转载 作者:行者123 更新时间:2023-11-29 21:15:42 27 4
gpt4 key购买 nike

我有一个网页,其中包含 jquery 库、我的 js 和第 3 方库。

<script src="/jquery.js"></script>
<script src="/webPage.js"></script>
<script src="/thirdParty.js"></script>

webPage.js 包含了网页点击事件的所有绑定(bind)

$("button").on('click',...) etc

第三方库使用了下面这行代码

if(window.jQuery) 
var jcb = jQuery.noConflict();

jcb 然后用于执行简单的任务,如 append 、 select 等

代码执行上述行的那一刻,$ 开始折腾,我得到错误 - 错误“$ 不是函数”。

如果我阻止第三方库 - 页面工作

以上用法正确吗?他们根本不应该使用上面的代码片段。而是这样:

if(window.jQuery) 
jcb = window.jQuery;

在我的 JS 文件中,我应该像 window.jQuery123=$.noConflict(); 而不是第三方库

哪种方法是正确的?

最佳答案

默认情况下,每当调用 jQuery.noConflict(); 时,$ 不再可用(有关它的更多详细信息,请查看看看 docs )。从现在开始,只有 jQuery 或在您的示例中 jcb 是访问 jQuery 的唯一方法。

jQuery("selector").html(); // works
test("selector").html(); // works NOT
$("selector").html(); // works

var test = jQuery.noConflict();

jQuery("selector").html(); // works
test("selector").html(); // works
$("selector").html(); // works NOT

您可以用 IIFEclosure 包装其他代码,让它再次与 $ 一起工作:

(function($) {
$("selector").html();
})(jQuery);

您甚至可以自己重新注册$。但这可能会对您的第三方应用程序产生副作用,当某些东西自己使用 $ 时。

window.$ = jQuery;

关于javascript - jquery noConflict : Assert my Understanding 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39489623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com