我正在尝试拖动从 AJAX 返回的动态div。下面的代码在桌面上很好用,但是在iPad上,我必须拖动(页面加载时)每个可拖动的对象两次,一次是初始化,然后拖动。在页面加载时也能拖动这个对象吗?我的代码如下:
HTML格式:
<div class="draggable"> drag this </div>
查询:
$.fn.liveDraggable = function (opts)
{
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)))
{
this.live("touchstart", function() {
if (!$(this).data("init")) {
$(this).data("init", true).draggable(opts);
}
});
return $();
}
else
{
this.live("mouseover", function() {
if (!$(this).data("init")) {
$(this).data("init", true).draggable(opts);
}
});
return $();
}
};
$(".draggable").liveDraggable(
{
helper: 'clone',
containment: '#origin'
})
1条答案
按热度按时间qlckcl4x1#
你不能绑定mouseover事件并期望它们在触摸设备上有一对一的关系。简单地说,我也有同样的问题,除了不使用一个活的模型之外,还没有找到解决方案,这有点糟糕,因为每次你添加一个新的dom元素来继承这些属性时,你都必须重新初始化所有的东西。
顺便说一句。
请尝试以下操作以确定是否已将Live事件附加到该元素。
基本上,您不需要添加随机数据()属性,例如
上面的方法可以防止不需要的东西在名称空间中造成混乱,因为一旦附加了可拖动的方法,它就始终是真的,而且可拖动的方法可以很容易地删除。