2017-06-21 63 views
0

不知道如何制定一个问题,需要将某种类型的事件分配给某个变量,然后使用它。例如:JS。将事件属性类型分配给变量

mx = ('ontouchstart' in document.documentElement) ? event.changedTouches[0].pageX : event.pageX; 

然后:

function fn(e) { 
    return mx - elem1.getBoundingClientRect().left; 
} 

e -event对象进入mx,并返回所分配的早期事件类型(使得мх要么e.changedTouches[0].pageXe.pageX)。

有没有可能这样做? (否则,必须检查ontouchstart每次px鼠标移动的支持...)

+0

您如何定义两个方法并使用正确的方法? – epascarello

回答

1

如果您不想在每次迭代时执行if检查,而不是仅使用所需版本定义函数。

var fn = (function() { 
    if ('ontouchstart' in document.documentElement){ 
    return function(event){ 
     return event.changedTouches[0].pageX - elem1.getBoundingClientRect().left 
    } 
    } else { 
    return function(event){ 
     return event.pageX - elem1.getBoundingClientRect().left 
    } 
    } 
}()); 
+0

谢谢!这很好! iPhone/Safari上的 – CodeGust

+0

我得到错误:TypeError:undefined不是一个对象(评估'event.changedTouches')---这里:return function(event){return event.changedTouches [0] .XX – CodeGust

+0

我试着分配e打电话给fn之前的事件 - 改变noghing ...你能建议你在这里错了吗? – CodeGust