第一次单击div时如何使事件冒泡起作用?

问题描述 投票:0回答:1

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

它仍然仅在第二,第三,...点击时有效,但在第一次点击时无效。

jquery jquery-events event-bubbling
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.