1

画像スライドに取り組んでおり、タッチ対応にしています。この記事に記載されているコード スニペットを使用してこれを行っています: http://blog.safaribooksonline.com/2012/04/18/mapping-mouse-events-and-touch-events-onto-a-single-event /

著者は、タッチ イベントで正規化イベントをトリガーする彼のコードを使用することで、X 座標と Y 座標へのアクセスがはるかに簡単になると述べています。そして、それはまさに私が難しいと感じたものです。これらの値にまったくアクセスできないようです。思いつく限りのことはすべて試しました。

コードは次のとおりです。http://jsfiddle.net/BC8dr/3/

正規化イベント:

function normalizeEvent(type, original, x, y){

    return jQuery.Event(type, {

        pageX: x,
        pageY: y,
        originalEvent: original

    });

}

コードの最後で、アクセスしたくない場所にコメントしました。

jQuery(current_slide).bind(TouchMouseEvent.DOWN, onDownEvent);

function onDownEvent(e){

    // This is where I need X and Y coordinate access

    // This will return result: undefined
    var x = e.pageX;
    console.log(x);
}​

私の質問は、X 座標と Y 座標にアクセスするにはどうすればよいですか?

*注: 私は JS/jQuery の初心者です。

4

2 に答える 2

0

event.clientX event.clientYあなたの場合はそう使ってXとY座標を受け取ることができます

function onDownEvent(e){

    console.log('X = ' + e.clientX);
    console.log('Y = ' + e.clientY);
}​

あなたはここでもっと読むことができます

于 2012-11-16T13:11:45.307 に答える
0

私はこの質問が十分に古いことを知っていますが、e.pageY e.PageX を使用すると、Android フォンで問題が発生しました。

次のように、イベントの別の値をターゲットにすることで、これがどの程度修正されたか:

$(window).on("touchstart", function(event){
        var touchStartY = event.originalEvent.touches[0].clientY;
        var touchStartX = event.originalEvent.touches[0].clientX;
    });
$(window).on("touchmove", function(event){
        var touchMoveY = event.originalEvent.touches[0].clientY;
        var touchMoveX = event.originalEvent.touches[0].clientX;
    });

最初の関数は、起動時にブラウザで触れた場所の x/y を返します。2 つ目は、ブラウザでタッチした場所の x/y を提供しますが、指を動かすたびに呼び出されます。

「clientX」/「clientY」をターゲットにする代わりに、以下をターゲットにすることもできます。

  • screenX/screenY - これは、クライアントがブラウザー ウィンドウ内にあるデバイス画面でタッチした場所であると考えられます。
  • pageX/pageY - ブラウザー画面やデバイス画面ではなく、ドキュメントまたは Web ページの左上隅から値を取得すると考えられます。
于 2014-11-18T12:52:53.503 に答える