首頁 > web前端 > js教程 > jquery程式碼的執行方式

jquery程式碼的執行方式

无忌哥哥
發布: 2018-06-29 10:57:17
原創
1777 人瀏覽過

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

# 放在這裡,這樣寫就會無效,為什麼呢?

因為此時程式碼執行到js腳本的時候,body中的頁面還沒有渲染,$('#list>li')根本無法取得到元素

所以要放在頁面渲染結束,DOM樹生成再執行才會有效

那麼如何才能做到在head中也可以執行呢?有二種方法:

# 1. 使用window物件的onload事件:在頁面元素載入完成,再調用這個js腳本(延遲呼叫)

window.onload = function () {
$('#list > li').addClass('horiz')
}
登入後複製

那麼在jquery中有沒有同樣功能的方法呢?當然有,不僅有,而且效率更高:ready()

$(document).ready(function () {
$('#list > li').addClass('horiz')
})
登入後複製

 簡寫:

$(function(){
//jq代码
$('#list > li').addClass('horiz')
})
登入後複製

當然,如果將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>
登入後複製

以上是jquery程式碼的執行方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板