我无法解决这个问题以及我在网上发现的大量信息:
在我的项目中,JQuery加载了"defer".由于项目标准,我无法改变.
<script defer src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js'></script>
Run Code Online (Sandbox Code Playgroud)
现在我需要在页面中添加一些小函数(当前是内联的):
使用此设置,浏览器将尝试在jQuery加载之前执行内联脚本=>"未捕获的ReferenceError:$未定义"
<body>
...
...
<script>
$("#city").change(function() {...some stuff...};
$("#doctor").change(function() {...some stuff...};
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
什么是解决这个问题的聪明方法?
将其包装在内部window.onload,因此当所有内容都完全加载时,脚本将被执行.
window.onload = function () {
$("#city").change(function() { /* ...some stuff... */ });
$("#doctor").change(function() { /* ...some stuff... */ });
}
Run Code Online (Sandbox Code Playgroud)
window.onload来自MDN的解释:
load文件在文档加载过程结束时触发.此时,文档中的所有对象都在DOM中,并且所有图像,脚本,链接和子帧都已完成加载.
https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onload
试试这个例子:
window.onload = function () {
$("#city").click(function() {
alert('city');
});
$("#doctor").click(function() {
alert('doctor');
});
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7600 次 |
| 最近记录: |