實例詳解jQuery的鏈?zhǔn)骄幊田L(fēng)格
鏈?zhǔn)骄幊痰膶崿F(xiàn)原理
jQuery可以讓我們開發(fā)者一直使用點語法調(diào)用自身方法的原理,主要原因是jQuery內(nèi)部利用了js的對象來實現(xiàn)。
在jQuery中,如果一直對同一個元素或元素的其他關(guān)系元素(兄弟元素,父子元素)進行操作,那么可以使用 .語法(點語法),一直寫下去。
$("#box").css("background", "pink").css("font-size":"29px");
$("#box").siblings().css("background", "");
可以寫成:
$("#box").css("background", "pink").siblings().css("background", "red");
實現(xiàn)鏈?zhǔn)骄幊蘪Query選擇器本身是一個jquery對象。jQuery內(nèi)部利用this返回了自己本身。
//js中,聲明一個對象
var obj = {
name:"姓名",
desc: function(){
console.log(this); // 打印當(dāng)前自身對象
console.log(this.name); // 調(diào)用自身對象的屬性
return this; // 實現(xiàn)鏈?zhǔn)骄幊痰脑?,就是在調(diào)用方法后,方法本身返回對象。
},
read: function(){
console.log("hello!");
return this;
}}
jQuery的鏈?zhǔn)骄幊田L(fēng)格實例
首先本人通過一個案例來展示jQuery的鏈?zhǔn)骄幊田L(fēng)格。先寫一個頁面,展示一個列表,代碼如下:
<body>
<div>
<ul class="menu">
<li class="level1">
<a href="#">水果</a>
<ul class="level2">
<li><a href="#">蘋果</a></li>
<li><a href="#">菠蘿</a></li>
<li><a href="#">香瓜</a></li>
</ul>
</li>
<li class="level1">
<a href="#">主食</a>
<ul class="level2">
<li><a href="#">面條</a></li>
<li><a href="#">饅頭</a></li>
<li><a href="#">米飯</a></li>
</ul>
</li>
</ul>
</div>
</body>
<script type="text/javascript">
$(function() {
$(".level1 > a").click(function() {
$(this).addClass("current").next().show().parent.siblings().children("a").removeClass("current").next().hide();
return false;
});
});
</script>
代碼執(zhí)行后的效果如下圖所示:
上述代碼的擴展效果就是通過jQuery的鏈?zhǔn)讲僮鲗崿F(xiàn)的,所有增加current類的操作、查詢子元素的方法調(diào)用、動畫方法的調(diào)用等都是對同一個元素進行的,所以在開始獲取到一個jQuery對象后,后面的所有方法、屬性的調(diào)用都通過 “.” 進行連續(xù)調(diào)用即可,這種模式就是鏈?zhǔn)讲僮鳌?/p>
為了增加代碼的可讀性和可維護性,我們將上面的鏈?zhǔn)酱a格式的修改如下:
<script type="text/javascript">
$(function() {
$(".level1 > a").click(function() {
// 給當(dāng)前的元素添加current樣式
$(this).addClass("current")
// 下一個元素顯示
.next().show()
// 父元素的同輩元素的子元素a移除current樣式
.parent.siblings().children("a").removeClass("current")
// 他們的下一個元素隱藏
.next().hide();
return false;
});
});
</script>
經(jīng)過規(guī)范格式的調(diào)整后,增加了代碼的易讀性,更加方便后期的維護。
與此同時,我們對于同一個jQuery對象進行鏈?zhǔn)讲僮鲿r,主要遵循下面3條格式規(guī)范。
(1)對于同一個對象不超過3個操作,可以直接寫成一行,代碼如下:
<script type="text/javascript">
$(function() {
$("li").show().unbind("click");
});
</script>
(2)對于同一個對象的較多操作,建議每行寫一個操作,代碼如下:
<script type="text/javascript">
$(function() {
$(this).removeClass("mouseout")
.addClass("mouseover")
.stop()
.fadeTo("fast", 0.5)
.fadeTo("fast", 1)
.unbind("click")
.click(function() {
.......
});
});
</script>
(3)對于多個對象的少量操作,可以每個對象寫一行,如果涉及子元素,可以考慮適當(dāng)?shù)目s進。代碼如下:
<script type="text/javascript">
$(function() {
$(this).addClass("highLight")
.children("a").show().end()
.siblings().removeClass("highLight")
.children("a").hide();
});
</script>
以上就是有關(guān)jQuery的鏈?zhǔn)骄幊田L(fēng)格。
總結(jié)
到此這篇關(guān)于jQuery鏈?zhǔn)骄幊田L(fēng)格的文章就介紹到這了,更多相關(guān)jQuery鏈?zhǔn)骄幊虄?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jQuery實現(xiàn)模擬flash頭像裁切上傳功能示例
這篇文章主要介紹了jQuery實現(xiàn)模擬flash頭像裁切上傳功能,結(jié)合實例形式分析了jQuery圖像剪切與文件傳輸相關(guān)操作技巧,需要的朋友可以參考下2016-12-12
通過jquery的$.getJSON做一個跨域ajax請求試驗
jquery提供了$.getJSON的方法,讓我們可以實現(xiàn)跨域ajax請求,但jqueryAPI上的內(nèi)容實在太少,如何用$.getJSON,請求網(wǎng)站應(yīng)該返回怎樣的數(shù)據(jù)庫才能讓$.getJSON獲取到,下面我就用一個實際例子來說明下。2011-05-05
詳解Jquery EasyUI tree 的異步加載(遍歷指定文件夾,根據(jù)文件夾內(nèi)的文件生成tree)
本篇文章主要介紹了Jquery EasyUI tree 的異步加載,可以實現(xiàn)遍歷指定文件夾,根據(jù)文件夾內(nèi)的文件生成tree,有興趣的可以了解一下。2017-02-02

