我在停止事件传播时遇到问题。想象一下这个场景:
<table id="test">
<tbody>
<tr>
<td class="row"> </td>
<td class="row"> </td>
<td class="row"> </td>
<td class="row"> </td>
<td class="row"> </td>
</tr>
<tr>
<td class="row"> </td>
<td class="row"> </td>
<td class="row"> </td>
<td class="row"> </td>
</tr>
</tbody>
</table>
然后这段代码:
(function(){
$('td.row').on('click', function(e){
if (! e.isPropagationStopped())
alert('Row clicked!');
});
$('table#test').on('click', 'img.live', function(e){
e.stopPropagation();
alert('Image clicked!');
});
$('td.row').html('<img src="http://fc03.deviantart.net/fs71/f/2011/161/f/c/nyan_cat_avatar_by_oxoxnaminemayxoxo-d3il6gm.gif" class="live">');
})();
每当单击图像时,都会触发两个事件。我希望它只是触发单击元素上的事件。我知道,由于它们是实时的,因此一旦传播结束,它们就会被解雇,但是,有什么解决方法吗?
据我调查,这两个事件实际上是相同的,但从srcElement
变为。这个跨浏览器是否一致?HTMLTableCellElement
HTMLImageElement
我已经在jsFiddle中放了一个演示,以防您想观看实际操作。