實例詳解jQuery的鏈式編程風格
鏈式編程的實現(xiàn)原理
jQuery可以讓我們開發(fā)者一直使用點語法調(diào)用自身方法的原理,主要原因是jQuery內(nèi)部利用了js的對象來實現(xiàn)。
在jQuery中,如果一直對同一個元素或元素的其他關系元素(兄弟元素,父子元素)進行操作,那么可以使用 .語法(點語法),一直寫下去。
$("#box").css("background", "pink").css("font-size":"29px"); $("#box").siblings().css("background", "");
可以寫成:
$("#box").css("background", "pink").siblings().css("background", "red");
實現(xiàn)鏈式編程jQuery選擇器本身是一個jquery對象。jQuery內(nèi)部利用this返回了自己本身。
//js中,聲明一個對象 var obj = { name:"姓名", desc: function(){ console.log(this); // 打印當前自身對象 console.log(this.name); // 調(diào)用自身對象的屬性 return this; // 實現(xiàn)鏈式編程的原理,就是在調(diào)用方法后,方法本身返回對象。 }, read: function(){ console.log("hello!"); return this; }}
jQuery的鏈式編程風格實例
首先本人通過一個案例來展示jQuery的鏈式編程風格。先寫一個頁面,展示一個列表,代碼如下:
<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的鏈式操作實現(xiàn)的,所有增加current類的操作、查詢子元素的方法調(diào)用、動畫方法的調(diào)用等都是對同一個元素進行的,所以在開始獲取到一個jQuery對象后,后面的所有方法、屬性的調(diào)用都通過 “.” 進行連續(xù)調(diào)用即可,這種模式就是鏈式操作。
為了增加代碼的可讀性和可維護性,我們將上面的鏈式代碼格式的修改如下:
<script type="text/javascript"> $(function() { $(".level1 > a").click(function() { // 給當前的元素添加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對象進行鏈式操作時,主要遵循下面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)對于多個對象的少量操作,可以每個對象寫一行,如果涉及子元素,可以考慮適當?shù)目s進。代碼如下:
<script type="text/javascript"> $(function() { $(this).addClass("highLight") .children("a").show().end() .siblings().removeClass("highLight") .children("a").hide(); }); </script>
以上就是有關jQuery的鏈式編程風格。
總結
到此這篇關于jQuery鏈式編程風格的文章就介紹到這了,更多相關jQuery鏈式編程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
分享33個jQuery與CSS3實現(xiàn)的絢麗鼠標懸停效果
今天整理了33個使用jQuery與CSS3實現(xiàn)絢麗的鼠標懸停效果,有些是純CSS3的,這些效果你完全可以用在你的網(wǎng)頁上,讓網(wǎng)站獲得更好的體驗2014-12-12按Enter鍵觸發(fā)事件的jquery方法實現(xiàn)代碼
這篇文章主要介紹了按Enter鍵觸發(fā)事件的jquery方法,需要的朋友可以參考下2014-02-02jQuery使用addClass()方法給元素添加多個class樣式
這篇文章主要介紹了jQuery使用addClass()方法給元素添加多個class樣式的方法,實例分析了addClass方法的使用技巧及添加多個樣式的實現(xiàn)方法,需要的朋友可以參考下2015-03-03