2012-04-03 64 views
1

在Backbone中我有以下模板,所有模板都完美呈現。在jQuery中綁定'touchstart'事件不支持android phonegap和backbone

<a href="#" data-role="button" id="button1" class="suggested-unselected"></a> 
    <script type="text/javascript"> 
      document.getElementById('button1').addEventListener('touchstart', select, false); 

     function select(){ 
      alert('test'); 
     } 
     function unselect(){ 
      alert('unselect'); 
     } 
    </script> 

它的工作原理:

<a href="#list" data-role="button" id="button" class="all-unselected"></a> 
    <a href="#" data-role="button" id="button" class="suggested-unselected"></a> 
    <a href="#" data-role="button" id="button" class="friends-unselected"></a> 
    <a href="#" data-role="button" id="button" class="private-unselected"></a> 
    <a href="#" data-role="button" id="button" class="buzz-unselected"></a> 
    <script type="text/javascript"> 
     var buttons = $("a#button"); 

     for(var i=0; i<buttons.length; i++){ 
      $(buttons[i]).bind('touchstart', select, false); 
      $(buttons[i]).bind('touchend', unselect, false); 
     } 

     function select(){ 
      alert('test'); 
     } 
     function unselect(){ 
      alert('unselect'); 
     } 
    </script> 

的touchstart不如果我寫了下面得不到然而觸發。就好像jQuery不能綁定事件一樣。可能是什麼問題?

回答

3

代碼中有幾個問題。

首先:

var buttons = $("a#button"); 

這將選擇與該ID button的錨元件。由於ID應該是唯一的,這應該只返回一個元素。但是,您正在嘗試循環返回的值。這不應該像你試圖這樣做。

二:

如果您選擇您通常使用.each()遍歷他們一套jQuery對象的。然而,如果你試圖將一個事件處理程序綁定到一組對象上,你甚至不必在循環中做這件事,因爲jQuery能夠將一個事件綁定到一個選擇上。

三: - 與addEventListener語法句法

.bind() -ing的作品不同,你混合.bind()

所以,翻譯你的工作不jQuery的例子(這是不壞不使用jQuery的BTW)到jQuery的,這將是這樣的:

$('#button1').bind('touchstart', select); 
$('#button1').bind('touchend', unselect); 

function select(){ 
alert('test'); 
} 

function unselect(){ 
alert('unselect'); 
} 
+0

我以前試過你的代碼。它仍然不起作用。在我看來,jQuery綁定到事件的方式是它期望的事件與實際觸發的touchstart不同。我確保刪除我的非工作代碼,以防止其他代碼無法正常運行。 – mabounassif 2012-04-03 07:55:39

+0

@mabounassif它工作正常[我和其他人](http://stackoverflow.com/questions/7018919/how-to-bind-touchstart-and-click-events-but-not-respond-to-both) ,但是如果你確定'addEventListener',爲什麼你不使用它呢? – m90 2012-04-03 07:59:48