jQuery可在iPad上拖动用于实时事件

yhuiod9q  于 2022-11-29  发布在  jQuery
关注(0)|答案(1)|浏览(127)

我正在尝试拖动从 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'
        
    })
qlckcl4x

qlckcl4x1#

你不能绑定mouseover事件并期望它们在触摸设备上有一对一的关系。简单地说,我也有同样的问题,除了不使用一个活的模型之外,还没有找到解决方案,这有点糟糕,因为每次你添加一个新的dom元素来继承这些属性时,你都必须重新初始化所有的东西。
顺便说一句。
请尝试以下操作以确定是否已将Live事件附加到该元素。

if (!$(this).data("draggable")) {
   $(this).draggable(opts);
}

基本上,您不需要添加随机数据()属性,例如

'.data("init", true)'

上面的方法可以防止不需要的东西在名称空间中造成混乱,因为一旦附加了可拖动的方法,它就始终是真的,而且可拖动的方法可以很容易地删除。

相关问题