一千萬個為什麽

搜索

綁定事件的方法很多

有各種方法將事件綁定到jquery中的元素

.click,.bind,.live,.delegate,在.data中保存事件數據等

這些中最優秀的方法是什麽?為什麽?

不會像這樣的單一模式更有益嗎?

$('selector').bind({
            event: 'click mouseover ...',
            keepAlive: (true, false, ...),
            trigfunction: (function() {
               //I run for click
            }, function() {
               //i run for mouseover
            }, function() {
                ///...
            })
        });

最佳答案

我不同意設置會更簡單,因為你很少將超過1或2個事件綁定到對象,至少在宏觀方案中......認為它確實發生了。

.event(func) is a shortcut, it's equivalent to .bind('event', func) so whatever your preferences is there is all that matters. However you if want want to bind the same handler to multiple events, .bind('event1 event2 event3', func) is much shorter.

.delegate(selector, event, func) is just .live('event', func) with a context, but of course these behave off bubbling, so they have another use...not necessarily "superior", just depends on the purpose.

這一切都取決於你想要達到的目標,哪個更好。使用 .bind()綁定4,000個元素的效率遠低於 .live().delegate()一次。反過來也是如此,單個元素上的 .bind()(不是通過AJAX替換等)比使用 .live()聽一個會冒泡20次的事件。如果您正在循環遍歷JSON並綁定 n 項,那麽這應該是一個問題,因為花費時間分配這些事件處理程序。

轉載註明原文: 綁定事件的方法很多