我使用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 - 但这似乎不是正确的解决方案。
答案 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文件:
答案 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。