2011-12-20 11 views
6

jqueryUIからjQueryとdraggableを使用しています。 jQueryを1.6から1.7に更新すると、pageX属性がイベント変数から消えてしまいました。次に例を示します。与えられた例では、jQueryのバージョンが1.6.4に変更された場合jQuery 1.7 clientX/pageX undefined

http://jsbin.com/ezulas/7/edit

- それは作業を開始します。最新リリースでは、clientX/YとpageX/Yの両方が動作しません。私はe = e.originalEventを使用できることを発見しましたが、それは適切な解決策ではありません。

+0

私はまったく同じ問題を抱えています。私はそれが縛られている方法を扱う新しいバグだと思う。たとえば、$(document).bind( 'click'、function(e){console.log( "e.pageX:" + e.pageX + "、e.pageY:" + e.pageY " ;});それは完全に正常に動作します。 jqueryでバグを記録しましたか? – Matt

+0

私はそれを記録しなかった、誰かが既にそのような大きなバグに気づいたと思った。 – Thinker

+0

誰かがhttp://bugs.jquery.com/ticket/10729をしたように見えます。バグはまだ開いていて、修正する必要があるかどうかについて多くの議論があります。 – JosephL

答えて

7

event.layerXとevent.layerY:バージョン1.7のこれらの非標準の プロパティを削除しました。これらの広告の廃止予定通知期間は通常 になりますが、Chromeバージョン16 はページに多数のコンソール警告メッセージを生成します。 のため、すぐに削除することにしました。これらのプロパティをサポートするプラットフォームでは、 は、 event.originalEvent.layerXおよびevent.originalEvent.layerYから利用できます。

出典:http://blog.jquery.com/2011/11/03/jquery-1-7-released/

あなたdragstopイベントハンドラ内console.log(e);すべてx/yはjQueryの1.7に欠けているデータを調整することを見ることができる場合には、それはevent.originalEventでアクセスできます。

UPDATE

あなたはorigionalEventプロパティにpageX/pageY見つけることができますeventオブジェクトに周りを見ている場合:ここで

$('#test').html(e.originalEvent.pageX+','+e.originalEvent.pageY); 

があなたのjsbinの更新版です:http://jsbin.com/ezulas/13/edit

+1

あなたの答えは無関係です。私の質問では、私はすでにoriginalEventを指摘しました。 jQueryのドキュメントでは、使用できるevent.pageXおよびpageY変数があることを読むことができます。 1.7で動作します。しかし、私の場合はそうではありません。 – Thinker

+1

私は何を欠席しましたか? 'e.pageX'を' e.originalEvent.pageX'に変更すると、イベントの水平位置が得られます。あなたは何をもっと探していますか? – Jasper

+2

jQueryドキュメントでは、event.pageXを使用してpageXにアクセスしています。http://api.jquery.com/event.pageX/しかし、これは機能しません。回避策を使用してください。 – Thinker

0

Event ObjectのjQueryドキュメントには、

と書かれています、

altKeyのバブル、ボタン、キャンセル、charCodeは、clientX、clientYプロパティ、ctrlKey、は、currentTarget:の

以下の特性はまた、それらの値のいくつかは、イベントに応じて不定てもよいが、イベント・オブジェクトにコピーされあなたが言っていることを合わせているようだ

、データ、詳細、eventPhase、metakeyな、offsetX、offsetY、originalTarget、pageX、pageY、prevValue、relatedTarget、がscreenX、screenYの、shiftKey、ターゲット、ビュー、。 状況では、イベントにはpageXとpageYが定義されていません。

+1

jQuery 1.6で定義されていましたが、なぜそれがoriginalEvent.clientXで定義されているのか理解できません。 – Thinker

1

私は同じ問題を抱え、かなりの間類似のスレッドを検索していました。 今はかなり遅れていますが、これはまだ幸せなコーダーが絶望から救われることを望みます。 プロジェクトでも使用していたjQuery UI Touch Punchファイルを確認し、x/y位置をどのように参照しているかを確認しました。 これは最終的に私のために働いていたものです:参考

$('.pages').on('touchstart vmousedown', function(e){ 
    var this_event_touch_start_Y = e.originalEvent.changedTouches[0].clientY; 
    var this_event_touch_start_X = e.originalEvent.changedTouches[0].clientX; 
}); 

、ここで私が使用していますすべてのjQueryファイルのリスト:

  • jqueryの-3.1.1.min.js
  • jqueryのを。 touchSwipe.min.js
  • jqueryの-ui.min.js
  • jquery.ui.touch-punch.min.js
  • jquery.mobile-1.4.5.min.js