我有一個關於jQuery綁定工作的問題。每當我們對任何元素使用綁定方法並編寫一些回調代碼時,是否會在綁定事件上執行完整的代碼「每次」或者是否jQuery只記住該代碼的輸出/結果並僅執行該結果。關於jQuery綁定的問題()
也可以在回調代碼內部生成另一個事件嗎?
像它是如何工作的。
我有一個關於jQuery綁定工作的問題。每當我們對任何元素使用綁定方法並編寫一些回調代碼時,是否會在綁定事件上執行完整的代碼「每次」或者是否jQuery只記住該代碼的輸出/結果並僅執行該結果。關於jQuery綁定的問題()
也可以在回調代碼內部生成另一個事件嗎?
像它是如何工作的。
每次觸發事件中的另一個事件,必然事件對指定目標的所有功能得到執行。這些回調函數的返回值用於確定事件是否應該繼續傳播。
有調用的腳本的一部分和事件的回調函數之間的一些顯著的差異:
this
指結合的元件,該事件被分配到)i
可以使它們的網絡連接由當時的回調被稱爲最終值)由於回調只是功能,他們可以做任何事情,任何其他功能可以做,包括調用trigger
。請注意不要讓遞歸函數調用到同一個事件來導致自己的無限循環。
你不會想打電話:
function foo()
{
foo();
}
同樣,你不會想撥打:
$('#foo').click(function(){
//short form for .trigger('click')
$(this).click();
});
您可以使用.trigger()輕鬆生成另一個事件。
編輯: 閱讀並重讀第一個問題後。我相信你正在尋找的答案是bind()每次執行。但是,在回調代碼更改DOM的情況下,可能會將元素添加到該元素上的事件不會被綁定的位置。考慮添加按鈕的代碼。如果您在所有代碼中使用$("#mybutton").bind("click")
,則此新元素不會綁定任何事件。爲了得到一個「點擊」來做某件事,你必須在它被添加到DOM之後綁定它,否則你不得不使用.live()或.delegate()而不是.bind()。
爲什麼下跌投票? – kasdega
請參閱我的答案... .bind()不適用於稍後添加到DOM的元素。因此,如果回調函數向DOM添加一個元素,它還必須提前執行bind()或.live()/。委託()。 – kasdega
它我不清楚你問什麼相關綁定 – kasdega