2013-03-24 46 views
0

我有这样的代码:JavaScript的嵌套的onclick

<td onclick="Test()"> 
    <img src="test.jpg" onclick="Test2(); return false;"><br> 
    Rest of the cell with some text. 
</td> 

当我点击图像,测试()也被解雇了,因为我也可以点击表格单元格。如何预防这一点?如果我点击图像,我想要test2()触发,如果我点击表格单元格中的其他位置,应该触发test()。

编辑:即使返回false,Test()仍然被触发(在Chrome中测试)!

+0

它仍然没有工作!请帮助我。 – Mbrouwer88 2013-03-28 17:07:23

+0

任何人的答案? – Mbrouwer88 2013-03-29 09:33:56

+0

了解事件代表团 – 2013-03-29 10:44:25

回答

3

简短的回答:

<img src="test.jpg" onclick="Test2(); return false;"> 

龙答:

事件顺序 - http://www.quirksmode.org/js/events_order.html

+0

谢谢你。对不起,作为一个noob。我从例子中学到了最好的东西! – Mbrouwer88 2013-03-24 22:15:16

+1

对不起,它仍然无法正常工作!请参阅上面的 – Mbrouwer88 2013-03-29 09:34:12

+0

@ Mbrouwer88 - 在这种情况下,您的Test2中存在JavaScript错误(该函数会导致脚本执行在返回false语句之前暂停)在Chrome或Firefox中,打开控制台或Firebug(CTRL + SHIFT + J)并点击图片 - 你会看到一个脚本错误,修复它。 – Adam 2013-03-29 11:50:22

6

如果Test2()返回false,点击不会泡到Test()

+0

无法正常工作,请参阅上文。请进一步帮助我。 – Mbrouwer88 2013-03-29 10:00:43

1

我喜欢的方式是使用eventListeners和event.stopPropagation(),因为我读过一些浏览器不接受return false和我t的也是not a very well defined action。像Adam said一样,阅读事件传播是值得的。

<div id="clickme"></div> 

<script> 
document.getElementById("clickMe").addEventListener("click", function(event) { 
    event.stopPropagation(); 
    //event.preventDefault(); this is the same as return false; 
}); 
</script>