我正在制作日历。我希望用户能够单击特定日期(表格单元)内的任何地方,并且会发生一些事情。当天可能有一些事件,这些事件包含在表单元格的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>
它仍然仅在第二,第三,...点击时有效,但在第一次点击时无效。
因为您已经在onclick处理程序中有效地编写了绑定代码。将点击绑定($('。view')。click部分)放入文档中。另外,为什么负载不在处理程序之外?