1

ボードゲームを作っています。ボードは試合が行われた後に動的に追加され、サイズは画面サイズに基づいて各プレーヤーごとに一意に決定されます。これはピースを適切に配置することを意味します。ボードが DOM のどこにあるかを知る必要があります。

$(document).on('click', '#boardOverlay', function(event){

    event.preventDefault();

    var offset = $(this).offset();

    alert("offset.left: " + offset.left + " offset.top: " + offset.top );

    var move = {};

    var mouseX = event.pageX - offset.left; 
    var mouseY = event.pageY - offset.top;


    move.Y = Math.floor(mouseX / board.piece_length);
    move.X = Math.floor(mouseY / board.piece_length);

    socket.emit('move', move, board.color);

});

アラートステートメントが実行される前に、Chrome がこのエラーをスローしています

> Uncaught TypeError: Cannot read property 'clientTop' of null    jquery.min.js:4

私は何を間違っていますか?私はオフセット位置の両方を調べましたが、オフセットは正しい選択だと思いますが、どちらにも運がありませんでした。

注:.on()ボードを左上隅に置いたままにし、値を 0 と仮定するoffset.leftと、このoffset.top関数は正常に機能するため、メソッドは機能しています。

更新:エラーをスローしているJQuery行は次のとおりです

clientTop  = docElem.clientTop  || body.clientTop  || 0;

非縮小版の9264行目

4

1 に答える 1

-1

属性に直接アクセスしてみてください:

$(document).on('click', '#boardOverlay', function(event){
 var top = $(this).css("top");
 var left = $(this).css("left");
});
于 2012-12-30T21:45:49.480 に答える