カレンダーを作っています。ユーザーが特定の日(テーブルセル)内のどこでもクリックできるようにしたいのですが、何かが起こります。その日のイベントが発生する可能性があります。これらのイベントは、テーブルセル内の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回目、...クリックでのみ機能しますが、最初のクリックでは機能しません。