如何在第一次点击div时让事件冒泡工作?

时间:2012-06-06 18:41:53

标签: jquery javascript-events event-bubbling

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

它仍然只适用于第二,第三,......点击,但不是第一次。

1 个答案:

答案 0 :(得分:1)

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