簡體   English   中英

功能性jQuery:自定義事件還是功能?

[英]Functional jQuery: Custom Events or Functions?

作為函數式編程的新手,我正在研究應用程序的javascript(僅使用jQuery),並想知道jQuery的事件系統如何與其函數式編程范例相關聯。

我有一個setupAccountHeader函數,可以很容易地是一個文檔綁定的事件,例如

$(document).bind('setupAccountHeader', function() {
    blah, blah, blah;
});

要么

var setupAccountHeader = function() {
    blah, blah, blah;
};

然后,在需要時觸發或調用。

所以我有兩個問題:

1)函數式jQuery首選哪種樣式,或者這純粹是個人風格/風格的問題? 大圖架構的含義如何?

2)是否有任何功能強大的jQuery資源? 我覺得這是John Resig的意圖,但是我在信息或指南中找不到太多的實現方式。

關於第二種樣式的好處是,它將以其名稱顯示在調試器調用堆棧中,而不是“ anonymous”,我發現它會有所幫助。

您可以通過以下方法以及jQuery的添加事件機制(如Elzo所述)實現上述目標:

$(document).bind('setupAccountHeader', setupAccountHeader);
  • 綁定jQuery中事件的官方方法是第一個版本,這樣您就可以使用類似的方法來綁定和取消綁定事件。 我認為這並不是個人喜好,因為它有助於代碼可讀性,對代碼的支持以及使用與jQuery相關且包含在內的其他功能,例如防止默認事件冒泡。 第一個問題的第二個示例在JavaScript中是正確的,但是jQuery文檔中沒有在任何地方使用此樣式。

更新

如果您綁定事件並利用標准化事件系統的優勢,則可以將第一個版本用作常規版本(模糊,聚焦,加載,調整大小,滾動,卸載,卸載前,單擊,dblclick,mousedown,mouseup,mousemove,mouseover, mouseout,mouseenter,mouseleave,更改,選擇,提交,keydown,keypress,keyup,error)或您的自定義事件。

它們實際上並不相似。 為了與第二篇類似,您必須附加文檔以記錄一些事件。 嘗試取消他們的想法。

// first version
$(document).unbind('setupAccountHeader'); // will cancel the binding of some action
// second version
setupAccountHeader = null; // will just cancel a variable 

另一個版本只是一個閉包,您可以在JavaScript中的任何地方使用它,在這種情況下也可以使用。 沒有上下文,它沒有任何特定的含義。

  • 我不太明白第二個問題。 也許您可以詳細說明您的意思。 我不是英語母語人士。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM