2017-06-21 3 views
0

Nicht sicher, wie Sie eine Frage formulieren, müssen einer Variablen einen Ereignistyp zuweisen und diesen dann verwenden. Zum Beispiel:JS. Zuweisen einer Ereigniseigenschaft zu einer Variablen

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

dann:

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

die e -event Objekt geht zu mx ist und gibt den früheren Ereignistyp zugeordnet (so dass мх entweder e.changedTouches[0].pageX oder e.pageX).

Ist es möglich, das zu tun? (Andernfalls müssen Sie für die Unterstützung von ontouchstart jeden px der Mausbewegung prüfen ...)

+0

Wie wäre es, wenn Sie zwei Methoden definieren und die verwenden, die das Richtige hat? – epascarello

Antwort

1

Wenn Sie nicht möchten, dass die Prüfung bei jeder Iteration, nur die Funktion mit der gewünschten Version definiert.

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

Danke! Das funktioniert großartig! – CodeGust

+0

auf dem iPhone/Safari bekomme ich Fehler: TypeError: undefined ist kein Objekt (Auswertung 'event.changedTouches') --- hier: return function (event) {return event.changedTouches [0] .pageX – CodeGust

+0

Ich habe versucht, zuzuweisen e zum Ereignis vor dem Aufruf von fn - noghing ändern ... kannst du vorschlagen, dass es hier falsch ist? – CodeGust

Verwandte Themen