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 に答える