Tuesday, June 30, 2009 - 文章

神乎奇技的jQuery Hacking

十八歲的jQuery天才少年James Padolsey這回又讓我佩服到起了雞皮疙瘩...

一直以來,jQuery的語法有個小缺陷,就是在API中少了直接引用自己的捷徑。舉個例子來說,如果我想讓某個<div id='”dvX”>的寬度增加20px,常見的解法有兩種:

  1. $("#dvX”).width($(“#dvX”).width() + 20); <--會引用兩次$(...),效能不佳
  2. var $d = $(“#dvX”); $d.width($d.width()); <-- 效能較佳,但還是囉嗦

James在他的Blog文章中,發明了一種新寫法:

$("#dvX”).width($._this.width() + 20);

James的做法是巧妙地攔截jQuery建構式,偷偷地把最後一次呼叫的jQuery建構式內容用jQuery._this共用變數保存下來: (有一點以前寫組合語言攔截INT中斷的fu~~~)

(function(_jQueryInit){
     jQuery.fn.init = function(selector, context) {
        return (jQuery._this = new _jQueryInit(selector, context));
    };
})(jQuery.fn.init);

Javascript的超大彈性與天才少年的慧黠,一樣都教人嘆為觀止,目瞪口呆!

搜尋

Go

<June 2009>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication