gpt4 book ai didi

javascript - jquery没有冲突错误不是函数

转载 作者:行者123 更新时间:2023-12-03 00:36:53 25 4
gpt4 key购买 nike

我尝试使用jquery,没有冲突,但没有成功。 出于测试目的,我故意在页面中包含 jquery 两次,以获得错误! 我知道 jquery 应该只包含一次,但重点是尝试使其能够抵御编码不良的主题。

这是测试用例:

https://jsfiddle.net/v2jupagc/

如果我在 JavaScript 代码块之后包含第二个 jquery 链接,则会收到错误。如何使我的代码不发生冲突?

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<script type="text/javascript">

(function($) {
$.fn.test = function(){console.log('1')}
})(jQuery);

</script>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>


<script type="text/javascript">

if (!/loaded|interactive|complete/.test(document.readyState)) document.addEventListener("DOMContentLoaded",onLoad); else onLoad();
function onLoad() {
var nc = jQuery;
nc.noConflict();
nc("#wrapper").test();
}

</script>

最佳答案

您当前的逻辑不起作用,因为您使用 jQuery 3.3 的下一个引用覆盖了 $ (您添加了 $.test() 逻辑)。 1.

您需要在加载的第一个 jQuery 版本上调用$.noConflict(),以便保留对其的引用。类似这样,但请注意 nc 现在是对 jQuery 1.12.4 的引用:

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
var nc = $.noConflict();

(function($) {
$.fn.test = function() {
console.log('1')
}
})(nc);
</script>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
if (!/loaded|interactive|complete/.test(document.readyState))
document.addEventListener("DOMContentLoaded", onLoad);
else
onLoad();

function onLoad() {
nc("#wrapper").test();
}

// just to illustrate the point
console.log('nc =', nc.fn.jquery);
console.log('jQuery =', jQuery.fn.jquery);
</script>

关于javascript - jquery没有冲突错误不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53622501/

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