0

我正在制作日历。我希望用户能够单击特定日期(表格单元格)内的任何地方并且发生​​了一些事情。那天可能有事件,这些事件包含在表格单元格内的 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 次……点击,但不是第一次。

4

1 回答 1

1

因为您已经在 onclick 处理程序中有效地编写了绑定代码。将您的点击绑定($('.view').click 部分)放入您的文档中。另外,为什么负载在处理程序之外?

于 2012-06-06T18:45:33.447 回答