JQuery:延迟加载JQuery和'$未定义'
JQuery: Deferred loading of JQuery and '$ not defined'
我无法理解这个问题以及我在网上发现的大量信息:
在我的项目中,JQuery加载了"defer"。这一点我不能因为项目标准而改变。
<script defer src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js'></script>
现在我需要在页面中添加一些小函数(目前是内联的(:
使用此设置,浏览器将尝试在jQuery加载=>"Uncaught ReferenceError:$is not defined"之前执行内联scrip
<body>
...
...
<script>
$("#city").change(function() {...some stuff...};
$("#doctor").change(function() {...some stuff...};
</script>
</body>
解决这个问题的明智方法是什么?
将其封装在window.onload
中,因此只有在所有内容都已完全加载时才会执行脚本。
试试这个例子:
window.onload = function () {
$("#city").click(function() {
alert('city');
});
$("#doctor").click(function() {
alert('doctor');
});
}
<script defer src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js'></script>
<button id="city">City</button>
<button id="doctor">Doctor</button>
MDN:关于window.onload
的解释
加载事件在文档加载过程结束时触发。此时,文档中的所有对象都在DOM中,并且所有图像、脚本、链接和子帧都已完成加载。
https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onload
要获得更惯用的(在jquery中(方式,请使用下面的代码。与CCD_ 3相同。
$(document).ready(function() {
// put code here
});
另一种选择是使用$(function() { })
。
$(function() {
// put code here
})
优点:使用这种方法,您不必等待"加载"事件触发。。一旦jQuery完成加载,就应该立即执行此操作。
var initInterval = setInterval(function(){
if(window.jQuery) {
clearInterval(initInterval);
init(); // where init is the entry point for your code execution
}
}, 20);
function init(){
$('#example').text('Ahoy!');
}
<script defer src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js'></script>
<div id="example">Hi</div>
通过这种方式,您可以向window.load
:添加多个函数
window.addEventListener("load",function(event) {
$("#city").click(function() {
alert('city');
});
},false);
window.addEventListener("load",function(){
$("#doctor").click(function() {
alert('doctor');
});
},false);
相关文章:
- Jquery未定义函数正在停止其他操作
- jQuery未定义.以及如何解决
- 在Wirecloud中使用jQuery;未捕获的ReferenceError:jQuery未定义;
- 在部分视图内渲染的WebGrid将引发“;“jQuery未定义”,当尝试执行基于ajax的分页或过滤时
- jQuery 未定义 - $ 未定义
- Firefox 4 中的 JQuery 未定义错误和 $ 未定义错误
- Jquery 未定义在外部 js 文件上
- 即使未调用 JQuery 未定义的对象属性仍会导致错误
- "未捕获引用错误:jquery未定义“-向下滚动菜单
- 已下载免费模板,但得到:ReferenceError:jQuery未定义
- Wordpress:JQuery未定义,导致IPhone无限刷新
- 如何修复'jQuery未定义'jquery库中出现错误
- 未捕获的ReferenceError:jQuery未定义
- Javascript/jQuery未定义函数错误
- jQuery滚动不工作.(未捕获的ReferenceError: jQuery未定义)
- Owl Carousel Slider JS错误- Uncaught ReferenceError: jQuery未定义
- jQuery未定义值
- jQuery未定义现有html元素的值
- 获取元素的属性时出现Jquery未定义错误
- js/jquery;未定义,执行顺序