【发布时间】:2012-11-19 20:19:41
【问题描述】:
我创建了一个视频库,它根据元素的数据属性通过 swfobject 加载 Youtube 视频。它在所有浏览器中都运行良好,除了 IE。我看到的奇怪行为没有意义。
每个缩略图的标记如下:
<li>
<div class="movie-image">
<a class="" data-videotitle="Title" data-videoid="$node.contribution('video')" href="http://www.youtube.com/watch?v=41ZskpgQqZ4">
<img class="video-link" data-videotitle="Title" data-videoid="41ZskpgQqZ4" src="http://img.youtube.com/vi/41ZskpgQqZ4/default.jpg" alt="Title">
<h5>Title</h5>
</a>
</div>
</li>
用这个javascript绑定事件:
$('.video-link').click(function(){
player.setVideo(this.getAttribute("data-videoid"), true);
player.setTitle(this.getAttribute("data-videotitle"));
window.event.returnValue = false; //IESUX
if(window.event.stopPropagation) window.event.stopPropagation();
window.event.cancelBubble = true;
//Yes, there's a lot of redundancy here. None has worked.
return false;
})
现在,这是奇怪的部分:当我在除 IE 之外的任何浏览器中单击链接时,该事件都可以正常工作。
但是,在 IE 中,如果我单击 h5 元素,一切正常。但是,如果我单击图像,浏览器会导航到缩略图。这真的很奇怪,因为这甚至不是链接的目标。
编辑:我忘了说,我在这个特定网页上使用 JQuery 1.4.2 时卡住了。
编辑 2: 嗯……废话。我只是尝试组合一个小提琴来显示问题,但小提琴工作正常,即使使用旧版本的 JQuery。
【问题讨论】:
-
只看你的代码和标记,当你点击 h5 元素时,它应该导航到所有浏览器中的视频。您所做的任何事情都不应该导航到缩略图。
-
我知道...这就是为什么它如此奇怪。
-
这有点挑剔,但我认为点击 h5 在点击处理程序中根本不应该做任何事情。或者如果事件确实冒泡,它应该会导致错误,因为 h5 没有任何数据属性。您确定匿名函数中的
this指的是您认为它的作用吗? -
在 JS 中,
click事件将一直传播,直到找到事件侦听器(然后甚至超出此范围,除非您明确停止气泡),所以,是的,点击功能以 div 为目标射击。
标签: javascript jquery internet-explorer event-handling event-bubbling