JQuery Mobile swiperight 事件触发先前触发的列表视图元素
Posted
技术标签:
【中文标题】JQuery Mobile swiperight 事件触发先前触发的列表视图元素【英文标题】:JQuery Mobile swiperight event fires previously fired listview elements 【发布时间】:2015-06-23 07:56:18 【问题描述】:我正在尝试使用 '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%");
);
非常感谢各位。
【问题讨论】:
【参考方案1】:问题是您每次都向 yes 和 cancel 按钮添加新的点击处理程序,因此要么添加一个 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%");
);
);
【讨论】:
以上是关于JQuery Mobile swiperight 事件触发先前触发的列表视图元素的主要内容,如果未能解决你的问题,请参考以下文章
Jquery Mobile Swipe 事件导致输入中的文本不可拖动
在jquery mobile中打开面板时如何防止页面被拖动?
iOS7 中 jQuery Mobile 滑动事件的不稳定行为
jQuery Mobile中jQuery.mobile.changePage方法使用详解
jQuery Mobile仿360首页,jQuery Mobile网格布局,jQuery Mobile网址大全,HTML5仿360首页