我在寫一個jQuery插件。當我爲這個插件設置init方法時,我想爲上下文設置事件,但我不確定是應該爲事件設置委託目標還是直接將事件綁定到上下文。綁定jQuery插件時使用委託目標
我想考慮委託的主要原因是使用這個插件與動態內容。在某些情況下,插件被調用的這些元素可以使用ajax附加到頁面上。在這種情況下,是否有辦法設置事件,以便我不必在ajax調用之後銷燬和重新綁定事件?
目前,我做這樣的事情:
$(this).on('click', initEditor);
我應該考慮做這樣的事情:
$('body').on('click', this, initEditor);
或事件存儲委託作爲一個選項選項如下:
$(options.delegate).on('click', this, initEditor);
我注意到,在使用委託格式時,事件綁定到上下文的選擇器,而不是實際的上下文元素(即,如果這個是一個錨點,它將綁定到頁面上的所有錨點)。任何方式來避免這種情況?
謝謝!
你是說你的插件可以說一點兒也不存在一個元素上進行初始化? – adeneo 2013-05-03 17:03:24
一般來說,插件並不針對那些尚不存在的元素,針對動態元素通常是使用插件來避免增加不必要的複雜性插件爲那些誰也不需要使用它的動態元素留給了開發者。 – 2013-05-03 17:08:33
@ alex23 - 那麼你不需要一個委託事件處理程序,因爲你可以訪問插件中新創建的元素。 – adeneo 2013-05-03 17:26:30