1

1 回のクリックで 2 回発生する要素クリック イベントがあります。これは検索でよくある問題ですが、他の回答から考えられる原因の可能性を除外しました。コードは

console.log("registering label click");
$("label.tiletype").click(
  function(event) {
    event.stopPropagation(); // stop the .tile click being called
    console.log("label clicked, x = " + event.pageX + ", y = " + event.pageY);
    // more code...
  }
}

ページが読み込まれ、「label.tiletype」がクリックされると、ログが

registering label click
label clicked, x = 679, y = 172
label clicked, x = 679, y = 172

「ラベル クリックの登録」は 1 回しか発生しないため、何らかの理由でクリックが 2 回バインドされることはありません。

pageX と pageY の座標は同じであるため、2 回目のプログラムによる click() が要素に対して呼び出されるのではなく、同じ物理クリックから double イベントが発生します (間違っている場合は修正してください)。

デバッグ行はこの特定のコードにのみ含まれているため、他のクリック イベントは発生しません。

Firebug でソースを確認したところ、複数の「label.tiletype」要素がありますが、画面上で重複するものはありません。それらはすべて display:block と float:left です。

JavaScript ファイル (375 行目https://github.com/okohll/agileBase/blob/200dd1c6c1a8968bc9d8f5b2b3d9188ac4776984/gtpb_clientside/resources/simple/simple.js ) で他のことが起こっていますが、他に何が起こっていても、上記のステートメントは常に論理的に正しい。

これは、Firefox と Safari の両方で発生します。

私は何を逃したのですか?

JSFiddle: http://jsfiddle.net/okohll/cKgAp/

4

4 に答える 4

4

このサイトによると、の二重使用が$(document).ready原因である可能性があります。最初に関数のバインドを解除して回避してください。

$('label.tiletype').unbind('click').bind('click',
function(event) {
  event.stopPropagation(); // stop the .tile click being called
  console.log('label clicked, x = ' + event.pageX + ', y = ' + event.pageY);
  // more code...
}
于 2013-03-30T23:10:52.867 に答える
1

コードに構文エラーがあります。

console.log("registering label click");
$("label.tiletype").click(function(event) {
    event.stopPropagation(); // stop the .tile click being called
    console.log("label clicked, x = " + event.pageX + ", y = " + event.pageY);
    // more code...
});

ただし、このコードは期待どおりに機能します (「ラベルがクリックされました」というメッセージが 1 つだけトリガーされます)。そのため、残りのコードまたは HTML コードの有効性を確認する必要があります (たとえば、ラベルが閉じられていないと、この動作が発生する可能性があります)。

于 2013-03-30T23:10:48.467 に答える
0

on()を使用できます

$("label.tiletype").on('click', function (event) {
   alert("label clicked, x = " + event.pageX + ", y = " + event.pageY);
});

http://jsfiddle.net/cKgAp/6/

于 2013-03-30T23:57:50.520 に答える