JQuery Mobile swiperight 事件触发之前触发的列表视图元素
JQuery Mobile swiperight event fires previously fired listview elements
我正在尝试使用 'swiperight' 事件来删除列表视图项,但该事件似乎也会针对之前触发的元素触发。我已经为此苦苦挣扎了一段时间,试图调试并弄清楚它是范围问题还是冒泡问题,但我真的不知道。
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%"});
});
}
非常感谢大家。
问题是您每次都在向“是”和“取消”按钮添加新的点击处理程序,因此要么添加一个 off() 来删除以前的处理程序,要么只在 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%"});
});
});
我正在尝试使用 'swiperight' 事件来删除列表视图项,但该事件似乎也会针对之前触发的元素触发。我已经为此苦苦挣扎了一段时间,试图调试并弄清楚它是范围问题还是冒泡问题,但我真的不知道。
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%"});
});
}
非常感谢大家。
问题是您每次都在向“是”和“取消”按钮添加新的点击处理程序,因此要么添加一个 off() 来删除以前的处理程序,要么只在 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%"});
});
});