我有一个网页,其中有 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();
的内容,而不用担心第三方库
哪种方法是正确的?
最佳答案
默认情况下,每当调用 somwhere 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
您可以使用 IIFE
或 closure
包装其他代码,以使其再次与 $
一起使用:
(function($) {
$("selector").html();
})(jQuery);
您甚至可以自己重新注册$
。但是,当某些东西自己使用 $
时,这可能会对您的第三方应用产生副作用。
window.$ = jQuery;
关于javascript - jquery noConflict的用法: Assert my Understanding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39489623/