實(shí)例詳解jQuery的鏈?zhǔn)骄幊田L(fēng)格
鏈?zhǔn)骄幊痰膶?shí)現(xiàn)原理
jQuery可以讓我們開(kāi)發(fā)者一直使用點(diǎn)語(yǔ)法調(diào)用自身方法的原理,主要原因是jQuery內(nèi)部利用了js的對(duì)象來(lái)實(shí)現(xiàn)。
在jQuery中,如果一直對(duì)同一個(gè)元素或元素的其他關(guān)系元素(兄弟元素,父子元素)進(jìn)行操作,那么可以使用 .語(yǔ)法(點(diǎn)語(yǔ)法),一直寫(xiě)下去。
$("#box").css("background", "pink").css("font-size":"29px");
$("#box").siblings().css("background", "");
可以寫(xiě)成:
$("#box").css("background", "pink").siblings().css("background", "red");
實(shí)現(xiàn)鏈?zhǔn)骄幊蘪Query選擇器本身是一個(gè)jquery對(duì)象。jQuery內(nèi)部利用this返回了自己本身。
//js中,聲明一個(gè)對(duì)象
var obj = {
name:"姓名",
desc: function(){
console.log(this); // 打印當(dāng)前自身對(duì)象
console.log(this.name); // 調(diào)用自身對(duì)象的屬性
return this; // 實(shí)現(xiàn)鏈?zhǔn)骄幊痰脑恚褪窃谡{(diào)用方法后,方法本身返回對(duì)象。
},
read: function(){
console.log("hello!");
return this;
}}
jQuery的鏈?zhǔn)骄幊田L(fēng)格實(shí)例
首先本人通過(guò)一個(gè)案例來(lái)展示jQuery的鏈?zhǔn)骄幊田L(fēng)格。先寫(xiě)一個(gè)頁(yè)面,展示一個(gè)列表,代碼如下:
<body>
<div>
<ul class="menu">
<li class="level1">
<a href="#">水果</a>
<ul class="level2">
<li><a href="#">蘋(píng)果</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í)行后的效果如下圖所示:
上述代碼的擴(kuò)展效果就是通過(guò)jQuery的鏈?zhǔn)讲僮鲗?shí)現(xiàn)的,所有增加current類的操作、查詢子元素的方法調(diào)用、動(dòng)畫(huà)方法的調(diào)用等都是對(duì)同一個(gè)元素進(jìn)行的,所以在開(kāi)始獲取到一個(gè)jQuery對(duì)象后,后面的所有方法、屬性的調(diào)用都通過(guò) “.” 進(jìn)行連續(xù)調(diào)用即可,這種模式就是鏈?zhǔn)讲僮鳌?/p>
為了增加代碼的可讀性和可維護(hù)性,我們將上面的鏈?zhǔn)酱a格式的修改如下:
<script type="text/javascript">
$(function() {
$(".level1 > a").click(function() {
// 給當(dāng)前的元素添加current樣式
$(this).addClass("current")
// 下一個(gè)元素顯示
.next().show()
// 父元素的同輩元素的子元素a移除current樣式
.parent.siblings().children("a").removeClass("current")
// 他們的下一個(gè)元素隱藏
.next().hide();
return false;
});
});
</script>
經(jīng)過(guò)規(guī)范格式的調(diào)整后,增加了代碼的易讀性,更加方便后期的維護(hù)。
與此同時(shí),我們對(duì)于同一個(gè)jQuery對(duì)象進(jìn)行鏈?zhǔn)讲僮鲿r(shí),主要遵循下面3條格式規(guī)范。
(1)對(duì)于同一個(gè)對(duì)象不超過(guò)3個(gè)操作,可以直接寫(xiě)成一行,代碼如下:
<script type="text/javascript">
$(function() {
$("li").show().unbind("click");
});
</script>
(2)對(duì)于同一個(gè)對(duì)象的較多操作,建議每行寫(xiě)一個(gè)操作,代碼如下:
<script type="text/javascript">
$(function() {
$(this).removeClass("mouseout")
.addClass("mouseover")
.stop()
.fadeTo("fast", 0.5)
.fadeTo("fast", 1)
.unbind("click")
.click(function() {
.......
});
});
</script>
(3)對(duì)于多個(gè)對(duì)象的少量操作,可以每個(gè)對(duì)象寫(xiě)一行,如果涉及子元素,可以考慮適當(dāng)?shù)目s進(jìn)。代碼如下:
<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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分享33個(gè)jQuery與CSS3實(shí)現(xiàn)的絢麗鼠標(biāo)懸停效果
今天整理了33個(gè)使用jQuery與CSS3實(shí)現(xiàn)絢麗的鼠標(biāo)懸停效果,有些是純CSS3的,這些效果你完全可以用在你的網(wǎng)頁(yè)上,讓網(wǎng)站獲得更好的體驗(yàn)2014-12-12
jQuery中insertAfter()方法用法實(shí)例
這篇文章主要介紹了jQuery中insertAfter()方法用法,實(shí)例分析了insertAfter()方法的功能、定義及匹配的元素插入到另一個(gè)指定的元素集合后面的使用技巧,需要的朋友可以參考下2015-01-01
按Enter鍵觸發(fā)事件的jquery方法實(shí)現(xiàn)代碼
這篇文章主要介紹了按Enter鍵觸發(fā)事件的jquery方法,需要的朋友可以參考下2014-02-02
jQuery使用addClass()方法給元素添加多個(gè)class樣式
這篇文章主要介紹了jQuery使用addClass()方法給元素添加多個(gè)class樣式的方法,實(shí)例分析了addClass方法的使用技巧及添加多個(gè)樣式的實(shí)現(xiàn)方法,需要的朋友可以參考下2015-03-03

