我正在尝试拖动从ajax返回的实时div。以下代码适用于桌面,但在ipad上,我必须拖动(在页面加载)每个拖动两次,一次初始化然后拖动。甚至在页面加载时使这个拖动有任何帮助?我的代码如下:
HTML:
<div class="draggable"> drag this </div>
jquery的:
$.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'
})
答案 0 :(得分:1)
您无法绑定鼠标悬停事件,并希望它们在触控设备上具有1对1的关系。简单地说,我有同样的问题,除了不使用实时模型之外没有找到解决方案,因为每次添加一个新的dom元素以继承这些属性时,你必须重新初始化所有内容。
旁注。
尝试以下方法以确定您是否已将实时事件附加到该元素。
if (!$(this).data("draggable")) {
$(this).draggable(opts);
}
基本上你无需添加像
这样的随机数据()属性'.data("init", true)'
上面的内容可以防止名称空间因你不需要的东西而混乱,因为一旦附加了可拖动的东西总是正确的,可以很容易地删除可拖动的方法。