jQuery 1.7 clientX / pageX не определено - PullRequest
6 голосов
/ 21 декабря 2011

Я использую jQuery и перетаскиваю из jqueryUI. При обновлении jQuery с 1.6 до 1.7 атрибуты clientX и pageX исчезли из переменной события. Вот пример:

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

Если в данном примере версия jQuery изменена на 1.6.4 - она ​​начинает работать. В последней версии - clientX / Y и pageX / Y не работают. Я обнаружил, что могу использовать e = e.originalEvent, но, похоже, это неправильное решение.

Ответы [ 3 ]

7 голосов
/ 21 декабря 2011

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/

Когда вы console.log(e); внутри вашего обработчика событий dragstop, вы можете видеть, что все данные координат x / y отсутствуют в jQuery 1.7; но к нему можно получить доступ в event.originalEvent.

UPDATE

Если вы осмотрите объект event, вы можете найти pageX / pageY в свойстве origionalEvent:

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

Вот обновленная версия вашего jsbin: http://jsbin.com/ezulas/13/edit

1 голос
/ 26 апреля 2017

У меня была такая же проблема, и я долго искал похожие темы.Сейчас уже довольно поздно, но я надеюсь, что это еще спасет некоторых счастливых программистов от отчаяния.Я проверил файл 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
0 голосов
/ 07 марта 2012

В документации jQuery для Объект события говорится

Следующие свойства также копируются в объект события, хотя некоторые из их значений могут быть неопределенными в зависимости от события:

altKey, пузырьки, кнопка, отменяемый, charCode, clientX, clientY, ctrlKey, currentTarget, данные, деталь, eventPhase, metaKey, offsetX, offsetY, originalTarget, pageX, pageY, prevValue, relatedTarget, screenX, screenY, screenY, shiftKey, target, view, которое

Что, кажется, соответствует тому, что вы говорите.В вашей ситуации для вашего события не определены pageX и pageY.

...