實(shí)例詳解jQuery的鏈?zhǔn)骄幊田L(fēng)格
鏈?zhǔn)骄幊痰膶?shí)現(xiàn)原理
jQuery可以讓我們開發(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ǔ)法),一直寫下去。
$("#box").css("background", "pink").css("font-size":"29px"); $("#box").siblings().css("background", "");
可以寫成:
$("#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)格。先寫一個(gè)頁(yè)面,展示一個(gè)列表,代碼如下:
<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í)行后的效果如下圖所示:
上述代碼的擴(kuò)展效果就是通過(guò)jQuery的鏈?zhǔn)讲僮鲗?shí)現(xiàn)的,所有增加current類的操作、查詢子元素的方法調(diào)用、動(dòng)畫方法的調(diào)用等都是對(duì)同一個(gè)元素進(jìn)行的,所以在開始獲取到一個(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è)操作,可以直接寫成一行,代碼如下:
<script type="text/javascript"> $(function() { $("li").show().unbind("click"); }); </script>
(2)對(duì)于同一個(gè)對(duì)象的較多操作,建議每行寫一個(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ì)象寫一行,如果涉及子元素,可以考慮適當(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-12jQuery中insertAfter()方法用法實(shí)例
這篇文章主要介紹了jQuery中insertAfter()方法用法,實(shí)例分析了insertAfter()方法的功能、定義及匹配的元素插入到另一個(gè)指定的元素集合后面的使用技巧,需要的朋友可以參考下2015-01-01按Enter鍵觸發(fā)事件的jquery方法實(shí)現(xiàn)代碼
這篇文章主要介紹了按Enter鍵觸發(fā)事件的jquery方法,需要的朋友可以參考下2014-02-02jQuery使用addClass()方法給元素添加多個(gè)class樣式
這篇文章主要介紹了jQuery使用addClass()方法給元素添加多個(gè)class樣式的方法,實(shí)例分析了addClass方法的使用技巧及添加多個(gè)樣式的實(shí)現(xiàn)方法,需要的朋友可以參考下2015-03-03