2012-09-03 47 views

回答

3

您使用bind(或更好,但on,爲bind已經過時;通過@Yoshi說明)當你有幾個,現有要綁定事件監聽器元素。您可以使用delegate,當你要處理還不存在的元素(例如,它們是動態生成的,你不希望處理程序綁定到每個新建的元素,但他們都有一個共同的父母,你可以把委託上)或者當你用一個共同的父代處理大量元素上的事件時(這對於父代表比每個元素上的個別處理程序更有效)。

DOM事件泡沫了DOM層次,所以當你點擊一個元素onclick處理該元素被觸發,那麼其母公司,那麼它的母公司,等等(處理程序,除非處理器呼籲stopPropagation當您使用bind/on時,您將處理程序附加到要處理的特定元素,並直接由您設置的目標觸發;當您使用delegate時,一個jQuery內部處理程序被附加到你指定的元素上,並且它捕捉到它在冒泡鏈上的事件; jQuery然後檢查實際目標(這是處理程序所連接的元素的子元素)是否匹配選擇器已經指定了委派,如果它被調用(它被稱爲如果你的實際處理程序是附加到目標元素而不是父元素; @shannon指出)。

+2

甲注意,['on'](http://api.jquery.com/on/)現在優選的前兩種方法將是很好。 – Yoshi

+1

注意委託應用於父元素,但該事件被稱爲*好像*它是觸發它的子元素。還要注意,對於委託人,您必須確保在您採取行動之前,您感興趣的元素的後代不僅不會吃掉該事件,而且還要確保該元素與委託人所應用的祖先之間的任何元素。 – shannon

+0

@Yoshi爲什麼比其他兩種方法更受歡迎? – lakesh

相關問題