Jquery Firefox和Chrome中实时点击事件报告的不同来源
使用此HTMLJquery 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测试->当然,这并不局限于图像——我在上对代码进行了调整,并使用普通的超链接获得了相同的结果
<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);
});
});