出于某种原因,我无法使用jQuery。
这是我的代码:
document.addEventListener("touchstart", function(e) {
e.preventDefault();
var orig = e.originalEvent;
var x = orig.changedTouches[0].pageX;
var y = orig.changedTouches[0].pageY;
//id("#draggable").css({top: y, left: x});
id("draggable").style.left = x;
id("draggable").style.top = y;
});
使用jQuery,您可以获得originalEvent
,但如果您不使用它,如何获取它?
由于
答案 0 :(得分:11)
jQuery传递给事件监听器函数的事件对象是jQuery自己创建的。其originalEvent
属性是浏览器创建的实际Event
对象,因此如果您附加没有jQuery的事件侦听器,则传递给侦听器的事件对象与{{1}完全相同jQuery事件对象的属性。因此,在您的示例中,如果您使用jQuery,originalEvent
正是e
指向的内容。
答案 1 :(得分:1)
我为您的问题提供了一个简单的解决方案。我在按钮中添加了一个全局变量“hovered”和mouseover,mouseout事件。当鼠标悬停按钮时,变量“hovered”设置为true,如果鼠标悬停在按钮上,则设置为false。 此机制允许您在onchange事件触发时确定鼠标是否在按钮上。因此,如果在onchange事件被触发时鼠标悬停在按钮上,那么我们就知道用户点击了按钮并触发了onchange。
当然,这是一个快速而肮脏的解决方案,只是为了给你一个想法。它可以做得更好。 希望它有所帮助:)
var hovered = false;
$('#button').mouseover(function(){
hovered = true;
}).mouseleave(function(){
hovered = false;
});
$(function(){
$('#button').bind("click",function(){
alert("button click");
});
$('#textbox').bind("change",function(){
alert("text changed");
if (hovered)
$('#button').trigger('click');
});
});
答案 2 :(得分:0)
var x = e.pageX;
如果桌面上有Safari,请在iPhone模式下打开它Develop-> User Agent-> Mobile Safari...
并在函数内部放置一个断点,您可以检查e对象及其所有属性。
答案 3 :(得分:0)
我认为您正在使用changedTouches,即a list of Touches for every point of contact which contributed to the event。多点触控就是这种情况发生的一个例子。对于touchstart,您可能只想查看触摸a list of Touches for every point of contact currently touching the surface。
var origTarget = e.originalEvent.touches[0].target
var x = e.originalEvent.touches[0].pageX
var y = e.originalEvent.touches[0].pageY