Jquery Firefox和Chrome中实时点击事件报告的不同来源

Jquery Firefox和Chrome中实时点击事件报告的不同来源,jquery,event-handling,cross-browser,jquery-events,Jquery,Event Handling,Cross Browser,Jquery Events,使用此HTML <div> <button> <img src="https://img.skitch.com/20110912-1m2qj31m7sxmh46uheef63gutu.gif"> </button> </div> 为什么Chrome中的事件目标节点是图像,而Firefox中的事件目标节点是按钮? JSFIDLE测试->当然,这并不局限于图像——我在上对代码进行了调整,并使用普通的超链接获得了相同的结果

使用此HTML

<div>
  <button>
    <img src="https://img.skitch.com/20110912-1m2qj31m7sxmh46uheef63gutu.gif">
  </button>
</div>
为什么Chrome中的事件目标节点是图像,而Firefox中的事件目标节点是按钮?


JSFIDLE测试->

当然,这并不局限于图像——我在上对代码进行了调整,并使用普通的超链接获得了相同的结果

根据jQuery文档,“可以是为事件注册的元素,也可以是事件的后代。”因此,您的结果与该方法的预期目的一致


但是,在所有浏览器中都会得到所需的结果:

奇怪。似乎IE/FF不希望从内部内容中禁用按钮。而Chrome则以合乎逻辑的方式:(哦,不!你在使用live。这让jQuery开发人员很难过:(试试delegate()。它也是IE9中的按钮。如果您稍微移动定位,请查看它。@OscarGodson从jQuery 1.7开始,
.live
.delegate
都在内部转换为
.on
方法。但是,您最好将
.on
分配给最近的DOM容器(
.delegate
style)而不是整个文档(
.live
style),只要可能。@Blazemonger是的。这是9月份发布的。万岁()!非常有趣。感谢您的帮助!
$(document).ready(function() { 
  $("body").live("click", function(event) {
    $("body").append(event.target.tagName);            
  });
});