2013-02-27 134 views
2

我目前正在將dropkick.js插件集成到我的應用程序中,但我遇到了一些問題。當我更改骨幹視圖時,事件無法正常工作,dropkick.js中關聯的.live()事件只是平淡無味。什麼都不會發生。我決定把這個升級到使用.on()函數,並得到它的工作(即使它仍然刪除我的網址出於某種原因)。

這並不在所有的工作:

$(document).on("click", ".dk_toggle", function() { 

這隻能稍微:

$(".content").on("click", ".dk_toggle", function() { 

你知道爲什麼document不會在所有的工作?

我的骨幹$el$(".content")

+0

你檢查了螢火蟲控制檯的錯誤嗎? – dakait 2013-02-27 04:16:52

+0

您正在使用的jQuery庫的版本是? – 2013-02-27 04:18:38

+0

是的,沒有錯誤報告。問題在於,默認情況下,dropkick.js使用活動函數,在加載需要在硬頁面上刷新下拉菜單的視圖時正常工作,但當我從另一個視圖過渡到視圖時,菜單點擊事件不會觸發菜單。這就是我想用on函數修改它的原因。我想也許是因爲生活被棄用了。具有諷刺意味的是,如果我只是使用一個常規的點擊事件...將其包裝在一個setTimeout函數中,並確保在點擊事件發生之前該菜單是可見的,那麼該事件就會起作用。 – 2013-02-27 04:21:14

回答

1

代替文檔,請使用body。它基本上給出了相同的行爲。

$('body').on("click", ".dk_toggle", function() { 
//.... 
}); 
+0

其實我試過了。身體也不適合我。這種工作的唯一的東西是。內容 – 2013-02-27 04:24:18

+0

@JasonBiondo,這有點難以置信。你能告訴我這種情況嗎? – Starx 2013-05-11 17:01:14

0

第一個例子演示了事件委託。

第二個示例將事件處理程序直接綁定到元素。這個事件仍然會冒泡(除非你在處理程序中阻止它),但由於處理程序綁定到了目標上,所以你不會看到這個過程的效果。

Test Run

+0

你能向我解釋如何在綁定到處理程序時防止事件冒泡? – 2013-02-27 04:28:59

+0

http://jsperf.com/jquery-body-on-vs-jquery-document-on – 2013-02-27 04:30:00

+0

@JasonBiondo使用stopPropagation。 – 2013-02-27 04:30:21

相關問題