jQuery 1.7 clientX / pageX undefined

时间:2011-12-20 23:18:34

标签: jquery jquery-ui events jquery-1.7

我使用jQuery和jqueryUI中的draggable。当我将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 个答案:

答案 0 :(得分: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/

当您在console.log(e);事件处理程序中dragstop时,您可以看到jQuery 1.7中缺少所有x / y坐标数据;但可以在event.originalEvent

中访问

<强>更新

如果您在event对象中查看,可以在pageX属性中找到pageY / origionalEvent

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

以下是您的jsbin的更新版本:http://jsbin.com/ezulas/13/edit

答案 1 :(得分: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

答案 2 :(得分:0)

Event Object的jQuery文档中,它说

  

以下属性也会复制到事件对象,但根据事件,某些值可能未定义:

     

altKey,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,data,detail,eventPhase,metaKey,offsetX,offsetY,originalTarget,pageX,pageY,prevValue,relatedTarget,screenX,screenY,shiftKey,target ,查看,哪个

这似乎适合你所说的。在您的情况下,您的活动没有定义pageX和pageY。