3

我在一个项目中使用 Leaflet.js,我想用 jQuery on() 绑定我的标记上的事件。

我测试了类似的东西:

$('body').on("hover",".leaflet-marker-icon",function(){console.log("foo")}) //doesn't work

但什么也没发生。

另一方面,当我直接绑定事件时它可以工作:

$(".leaflet-marker-icon").hover(function(){console.log("bar")}) //works

我在页面的另一个 div 上测试了 jQuery.on():

$('body').on("hover",".navbar",function(){console.log("g")}) //no problem

这个工作正常。

有什么线索吗?

4

4 回答 4

2

似乎没有发生传播。您需要提供更多代码才能获得更准确的答案。现在我怀疑这.stopPropagation()在某处被称为

于 2012-08-18T13:33:47.587 回答
2

试试这个:

$(document).ready(function(){
     $(document).on({
        mouseenter: function(){
           console.log("bar")
        },
        mouseleave: function(){
           console.log("foo")
        }
     }, ".leaflet-marker-icon")
})

请注意,从 jQuery 1.8 开始:名称“hover”用作字符串的简写,mouseentermouseleave弃用。

于 2012-08-18T13:39:31.123 回答
1

尝试

$(document).on("hover",".leaflet-marker-icon",function(){console.log("foo")});

文档而不是正文 - 这应该是捕获第一次正文加载时未出现的 dom 元素事件的正确方法。

于 2012-08-18T13:43:24.970 回答
0

我不会使用悬停,而是使用 mouseenter。还要确保您至少使用 jQuery 1.7+ 进行此事件委托。此外,body 标签应该只比您的小册子标记图标类高 1 级。您的导航栏类可能就是这种情况,但您的传单标记图标类可能不是这种情况。这也许就是导航栏起作用的原因。无论如何,我们需要这里的完整代码来提供帮助。

于 2013-07-26T13:08:01.217 回答