2013-02-27 58 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

相关问题