Rumah > hujung hadapan web > tutorial js > jquery代码的执行方式

jquery代码的执行方式

无忌哥哥
Lepaskan: 2018-06-29 10:57:17
asal
1885 orang telah melayarinya

$('#list > li').addClass('horiz')

放在这里,这样写就会无效,为什么呢?

因为此时代码执行到js脚本的时候,body中的页面还没有渲染,$('#list>li')根本无法获取到元素

所以要放在页面渲染结束,DOM树生成再执行才会有效

那么如何才能做到在head中也可以执行呢?有二种方法:

1. 使用window对象的onload事件:在页面元素加载完成,再调用这个js脚本(延迟调用)

window.onload = function () {
$('#list > li').addClass('horiz')
}
Salin selepas log masuk

那么在jquery中有没有同样功能的方法呢?当然有,不仅有,而且效率更高:ready()

$(document).ready(function () {
$('#list > li').addClass('horiz')
})
Salin selepas log masuk

简写:

$(function(){
//jq代码
$('#list > li').addClass('horiz')
})
Salin selepas log masuk

当然,如果将jquery代码写在html文档的底部,就不这样麻烦了,但还是推荐将代码用$(function(){})封装

为什么说:$(document).ready()方法比window.onload事件更高效呢?

html页面生成分为二步:

1. 生成DOM树: 告诉浏览器html文件中有多少元素以及他们之间的关系

2. 加载外部资源: 例如图像,外部文件等

window.onload事件必须要在dom树生成,外部资源全部加载完毕才可以触发

$().ready()事件:只要DOM创建完成就可以触发,不必等到元素全部加载完成,特别是有较大图片或文件时,效果非常明显

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jquery代码的执行方式</title>
<style type="text/css">
.horiz {
float:left;
list-style: none;
margin: 10px;
}
</style>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function(){
    //jq代码
    $(&#39;#list > li&#39;).addClass(&#39;horiz&#39;)
    })
</script>
</head>
<body>
<h2>购物清单</h2>
<ul id="list">
<li>生活用品
<ul>
<li><a href="">淘宝</a></li>
<li>箱包</li>
<li>衣服</li>
<li>鞋子</li>
</ul>
</li>
<li>数码产品
<ul>
<li><a href="">京东</a></li>
<li>笔记本电脑</li>
<li>显示器</li>
</ul>
</li>
<li>食品保健
<ul>
<li><a href="">拼多多</a></li>
<li>奶粉</li>
<a href="">玩具</a>
</ul>
</li>
</ul>
<!-- <script type="text/javascript" src="../js/jquery-3.3.1.js"></script> -->
<script type="text/javascript">
// $(&#39;#list > li&#39;).addClass(&#39;horiz&#39;)
// $(document).ready(function(){
// //这里放jQuery代码:将列表水平摆放
// $(&#39;#list > li&#39;).addClass(&#39;horiz&#39;)
// })
</script>
</body>
</html>
Salin selepas log masuk

Atas ialah kandungan terperinci jquery代码的执行方式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan