2015-04-16 93 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