2015-04-16 89 views
0

我試圖用'swiperight'事件刪除listview項目,但似乎事件也會觸發先前觸發的元素。我一直在努力嘗試調試並弄清楚它是一個範圍還是冒泡的問題,但我從字面上不知道。JQuery Mobile swiperight事件觸發先前觸發的listview元素

here is a gif to illustrate the problem

這裏是代碼:

var $task; 

$("#todolist").on("swiperight", ">li", function() { 
    $task = $(this); 
    $task.animate({left: "30%"}, confirmAndDelete($task)); 
}); 

function confirmAndDelete($task) { 
    $("#confirm").popup("open"); 
    $("#confirm #yes").on("tap", function() { 
     $task.animate({left: "70%"}, function() { 
      $task.remove(); 
     }); 
    }); 
    $("#confirm #cancel").on("tap", function() { 
     $task.animate({left: "-=30%"}); 
    }); 
} 

非常感謝球員。

回答

1

的問題是,您要添加新的自來水處理的是和取消按鈕,每個按鈕的時間,所以無論是添加一個關閉()刪除以前的處理程序,或只是創建它們一旦confirmAndDelete之外:

var $task; 

$(document).on("pagecreate","#page1", function(){ 

    $("#todolist").on("swiperight", ">li", function() { 
     $task = $(this); 
     $task.animate({left: "30%"}, function(){ 
      $("#confirm").popup("open"); 
     }); 
    }); 

    $("#confirm #yes").on("tap", function() { 
     $task.animate({left: "70%"}, function() { 
      $task.remove(); 
     }); 
    }); 
    $("#confirm #cancel").on("tap", function(e) { 
     $task.animate({left: "-=30%"}); 
    }); 

}); 
+0

太傻了:\謝謝你! – BarakA