我正在制作日历。我希望用户能够单击特定日期(表格单元格)内的任何地方并且发生了一些事情。那天可能有事件,这些事件包含在表格单元格内的 div 中。如果用户单击 div,则会发生其他事情。当用户单击时,我已设法防止事件冒泡doSomethingElse()
,但它在第一次单击时不起作用。它仅适用于后续点击,而不适用于第一次点击。为什么取消事件冒泡在第一次点击时不起作用,而只对所有后续点击起作用?
HTML:
<table>
<tr>
<td onclick="doSomething()">
<div class="view" onclick="doSomethingElse()">Text</div>
</td>
</tr>
</table>
Javascript:
function doSomethingElse() {
$('.view').click(function(e){
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation)
{
e.stopPropagation();
}
});
$('#myID').load('myFile.php');
}
更新:我把这个放在我的页面上:
<script>
$(document).ready(function() {
$('.view').click(function(e){
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation)
{
e.stopPropagation();
}
});
});
</script>
然后,onclick="doSomethingElse()"
只包含我的脚本的其余部分。问题是doSomethingElse()
有参数,所以看起来我仍然需要以下内容:
<div class="view" onclick="doSomethingElse(id1,id2)">Text</div>
它仍然只适用于第 2 次、第 3 次……点击,但不是第一次。