Wordpress自动加载jQuery。我想用它,但我得到:
未定义jQuery
这是因为各种插件扰乱了脚本的排序。因此,不能保证在加载jQuery之后加载我的脚本。所以如果它之前加载了,我就会得到那个错误。
我是否可以将脚本包装在等待jQuery加载的东西中,然后执行我的脚本?
备注
发布于 2019-11-12 09:22:57
window.deferAfterjQueryLoaded中的所有函数都将在定义jQuery之后运行,因此,如果您在window.deferAfterjQueryLoaded中推送所有inizializations,则可以确保它们将在jQuery之后运行。
<script>
if (!window.deferAfterjQueryLoaded) {
window.deferAfterjQueryLoaded = [];
//delete Object.defineProperty; //add this if you want to check the support
if (typeof (Object.defineProperty) === "function") {
Object.defineProperty(window, "jQuery", {
set: function (value) {
window.setTimeout(function () {
$.each(window.deferAfterjQueryLoaded, function (index, fn) {
fn();
});
}, 0);
Object.defineProperty(window, "jQuery", {value: value});
},
configurable: true
});
} else {
nIntervId = window.setInterval(function () {
if (typeof (jQuery) !== "undefined") {
$.each(window.deferAfterjQueryLoaded, function (index, fn) {
fn();
});
clearInterval(nIntervId);
}
}, 10);
}
}
window.deferAfterjQueryLoaded.push(function () {
(function ($) {
console.log("After jquery is loaded");
})(jQuery);
});
</script>
<script>
window.deferAfterjQueryLoaded.push(function () {
(function ($) {
console.log("After jquery is do something else");
})(jQuery);
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
您可以阅读更多关于Object.defineProperty的内容,可以查看跨浏览器支持这里。
发布于 2019-11-12 09:28:55
当“load”被触发时,可以使用jQuery:
window.addEventListener('load', (event) => {
// your code
});发布于 2019-11-12 09:23:27
也许这会有帮助:
$j = jQuery.noConflict();然后使用$j
汤姆
https://stackoverflow.com/questions/58815285
复制相似问题