2011-06-01 168 views
1

這段代碼在本書jQuery in action第131頁需要幫助理解這個代碼

我不明白

.trigger( 'adjustName');

究竟是什麼觸發adjustName

和簡單的解釋()

謝謝:)

$('#addFilterButton').click(function() { 
    var filterItem = $('<div>') 
    .addClass('filterItem') 
    .appendTo('#filterPane') 
    .data('suffix','.' + (filterCount++)); 
    $('div.template.filterChooser') 
    .children().clone().appendTo(filterItem) 
    .trigger('adjustName'); 
}); 

回答

3

這是一個字符串,一個自定義事件您定義的名稱。

例如它會觸發由綁定的事件處理程序:

el.bind('adjustName', function(){...}); 

欲瞭解更多信息,我建議有一個看documentation

附有.bind()或它的快捷方式的方法之一任何事件處理程序被觸發時,相應的事件發生。但是,他們可以手動啓動,但使用.trigger()方法。對.trigger()的調用以與事件由用戶自然觸發時相同的順序執行處理程序。


在不知道密碼的情況下,我會說,調用.trigger()這裏沒有任何影響,因爲它是所謂的clone編輯元素,如果true傳遞給clone事件處理程序只克隆。

1

也許原來的jQuery manual會有幫助嗎?

描述:執行連接到匹配 元件對於給定事件類型的所有處理和 行爲。

1

它允許您觸發或運行一個事件。例如,如果你想要的代碼來模仿按鈕的點擊,你可以寫....

$("#myButton").trigger('click'); 

這會再運行完全一樣,如果你點擊了自己的按鈕。

'adjustName'是一個自定義事件。所以觸發器函數正在運行該自定義事件。自定義事件是使用jQuery綁定函數分配的。

$("#someElement").bind('adjustName', function() {/* Some Code */}); 

爲清晰起見,您可能會創建一個客戶事件。也許你的應用程序打開一個文檔,所以你可能需要一個名爲'openDocument'和'closeDocument'的事件分配給包含該文檔的元素。