2010-10-04 27 views
3

由於某些原因,我無法使用jQuery。如何在iPhone上不使用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
var x = e.pageX; 

如果你使用Safari在桌面上,在iPhone模式
Develop-> User Agent-> Mobile Safari...
打開它,把你的斷點功能裏面,你可以檢查電子對象及其所有屬性。

+0

並不真正似乎這個問題回答我,但OP似乎高興... – 2010-10-04 13:28:02

+1

@Tim,我猜他拉着我的代碼行,把它放在自己的代碼和它的工作。當你解釋jQuery的'originalEvent'的本質時,他不能在這裏使用。 – Mic 2010-10-04 20:31:30

11

它傳遞給事件偵聽器函數的jQuery事件對象是jQuery自己創建的。它的originalEvent屬性實際上是由瀏覽器創建的Event對象,所以如果附加一個沒有jQuery的事件偵聽器,傳遞給偵聽器的事件對象與jQuery事件對象的originalEvent屬性完全相同。因此,在您的示例中,e正是e.originalEvent指向的內容,如果您使用過jQuery。

1

我已經爲您的問題提供了一個簡單的解決方案。我添加了一個全局變量「懸停」和鼠標懸停,鼠標事件的按鈕。當鼠標懸停按鈕時,變量「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');     
}); 

});​ 
相關問題