2012-01-22 110 views
2

使用phonegap,jquery。 是否有可能同時檢測兩個不同元素上的觸摸?檢測兩個不同的元素上的觸摸

我創建的東西需要兩個圖像(按鈕左鍵和按鈕右鍵)在觸發另一個事件之前同時按 。

下面是不是代碼的詳盡列表,而是應該深入瞭解哪些即時試圖實現

<head> 

<script type="text/javascript" charset="utf-8" src="phonegap-1.1.0.js"></script> 
<script type="text/javascript" charset="utf-8" src="jq.js"></script> 
<script type="text/javascript" src="jquery.stopwatch.js"></script> 

<script> 
    var w = new Stopwatch(updatedisplay, 50); 
    var onoff = false; 

    $("#button-left, #button-right").unbind("touch",begin); 

    function begin() { 
     onoff = true; 
     w.start(); 
    } 

    function end() { 
     w.stop(); 
     onoff = false; 
    }  

    function updatedisplay(watch) { 
     var mills = parseInt(watch.getElapsed().milliseconds/10); 
     if(mills<10) { 
      millis = '0'+mills; 
     } else { 
      millis = mills; 
     } 
     document.getElementById('counterValue').innerHTML = watch.toString() + "." + millis; 
    } 

    function reset() { 
     w.stop(); 
     onoff = false; 
     document.getElementById('counterValue').innerHTML = "00:00:00.00"; 
    } 
</script> 
</head> 

<body onload="onBodyLoad()"> 
    <div id="counterValue"> 
    00:00:00.00 
    </div> 
    <div id="button-left"></div> 
    <div id="button-right"></div> 
</body> 

:::::創造了這個FIX :::::有點醜,但工程出色:::::

我發現周圍的另一種方式,現在這可能是有點難看..但它工作得很好......

$(document).ready(function() {       
     document.getElementById('button-left').addEventListener('touchstart', nofunc(e), false); 
     document.getElementById('button-right').addEventListener('touchstart', nofunc(e), false); 
    }); 

    function vala(val) { 
     av = val; 
     checkvals(); 
    } 
    function valb(val) { 
     bv = val; 
     checkvals(); 
    } 
    function checkvals() { 
     if(av == 1 && bv == 1) { 
      if(onoff == false) { 
       begin(); 
      } else { 
       end(); 
      } 
     } 
    } 

    <div id="button-left" ontouchstart="vala(1)" ontouchend="vala(0)">&nbsp;</div> 
    <div id="button-right" ontouchstart="valb(1)" ontouchend="valb(0)">&nbsp;</div> 

回答

0

如上,我發現了一個辦法做到我需要什麼樣的......有點「手冊的閱讀」,我想出了這個

$(document).ready(function() {       
    document.getElementById('button-left').addEventListener('touchstart', nofunc(e), false); 
    document.getElementById('button-right').addEventListener('touchstart', nofunc(e), false); 
}); 

function vala(val) { 
    av = val; 
    checkvals(); 
} 
function valb(val) { 
    bv = val; 
    checkvals(); 
} 
function checkvals() { 
    if(av == 1 && bv == 1) { 
     if(onoff == false) { 
      begin(); 
     } else { 
      end(); 
     } 
    } 
} 

   

0

你的意思unbind因爲detach別的東西會從DOM刪除元素,要取消該事件有unbind

$("#btn1, #btn2").unbind("touch"); 

更新

變化orrder中要包括的js文件中的jquery.js必須是首先裝載其他自由,正在使用它,其次我已經從wonoff刪除var,使他們成爲全球範圍,第三我已經刪除onbodyload,而不是綁定在就緒處理程序中的觸摸事件,如下所示,嘗試

<head> 

<script type="text/javascript" charset="utf-8" src="jq.js"></script> 
<script type="text/javascript" charset="utf-8" src="phonegap-1.1.0.js"></script> 
<script type="text/javascript" src="jquery.stopwatch.js"></script> 

<script> 
    w = new Stopwatch(updatedisplay, 50); 
    onoff = false; 

    function begin() { 
     onoff = true; 
     w.start(); 
    } 

    function end() { 
     w.stop(); 
     onoff = false; 
    }  

    function updatedisplay(watch) { 
     var mills = parseInt(watch.getElapsed().milliseconds/10); 
     if(mills<10) { 
      millis = '0'+mills; 
     } else { 
      millis = mills; 
     } 
     document.getElementById('counterValue').innerHTML = watch.toString() + "." + millis; 
    } 

    function reset() { 
     w.stop(); 
     onoff = false; 
     document.getElementById('counterValue').innerHTML = "00:00:00.00"; 
    } 

$(document).ready(function(){ 
    $("#button-left, #button-right").bind("touch",begin); 
}); 
</script> 
</head> 

<body> 
    <div id="counterValue"> 
    00:00:00.00 
    </div> 
    <div id="button-left"></div> 
    <div id="button-right"></div> 
</body> 
+0

感謝約翰,試圖通過處理器'begin'來實現 - $(「#button-left,#button-right」)。bind(「touch」,begin);這並沒有達到預期的效果,即時通訊開發的iPad,使用phoneGap和jQuery,功能被放置在設備上,並觸發開始事件,沒有任何被觸及。 :( – Deano

+0

好吧我對phoneGap一無所知,所以幫助我理解'touch'是一個事件,'begin'也是一個事件? –

+0

begin是我創建的一個函數來啓動一個計時器......應該「觸摸」被替換爲函數'begin'然後呢? – Deano