【发布时间】:2013-01-06 11:37:44
【问题描述】:
我正在开发一个在地图上显示事件的网站。当用户将鼠标悬停在事件图钉上时,会显示一个工具提示信息窗口并提供事件信息。当用户点击图钉时,他们应该被放大到更靠近事件。
我在除 Firefox 之外的所有浏览器上都有此功能。由于某种原因,每个图钉 div 的单击事件都不会触发。这特别奇怪,因为 mouseover 事件触发没有问题。我也没有看到任何错误。
$(document).on('click', 'div.pushpin', function () {
alert('Detected a click!');
});
$(document).on('mouseover', 'div.pushpin', function () {
// Displays tooltip
});
这是我的网站:http://www.raveradar.com/qa
您可以比较它在 Chrome 和 Firefox 中的工作方式以查看问题。
我试图通过创建一个 jsFiddle 来隔离问题。但是点击事件触发没有问题:http://jsfiddle.net/acraswell/9TxQg/4/
此时我真的可以用第二双眼睛检查我的工作了。
编辑: 我刚刚意识到,如果您禁用“位置:固定;” "pushpin-icon" 图像上的 CSS 属性,突然单击该图标可以正常工作。
编辑 2: 我已经设法解决了这个问题,请参阅下面的解决方案。我会将答案奖励给任何能够解释为什么原始代码一开始就被破坏的人,因为这是真正的问题。
【问题讨论】:
-
好的,我刚刚注意到,如果我点击红色的“警报”圆圈,表示图钉集群中有多少事件,点击事件会正确注册......但点击图钉图标不起作用。不应该有任何覆盖元素,注意 mouseover 事件触发没有问题。
-
为我工作,firefox 17.0.1,linux
-
也许你已经知道了,但是当我在 Chrome 中查看时,你的 .pushpin 元素的高度都为 0 ......它们是如何捕获任何事件的?
-
@ocanal 我的意思是根据 Chrome 开发者工具中的计算样式的高度。但你是对的,他们有确实有高度的子元素,这就是他们如何拿起鼠标悬停/单击事件。我会检查这些子元素是否在浏览器中正确定位(它们具有相对或固定定位)并且可能没有自己的事件处理程序干扰
.pushpin元素上的处理程序。 -
在 Firefox 上查看它 sometimes 似乎仅在我单击警报圈的中间而不是边缘(由填充物制成)时才起作用,所以我想知道如果 FF 如何处理填充元素上的点击有一些特殊性。
标签: javascript jquery .net twitter-bootstrap asp.net-mvc-4