jQuery可在iPad上拖动实时事件

jQuery draggable for live events on iPad

本文关键字:实时 事件 拖动 可在 iPad jQuery      更新时间:2023-09-26

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

您不能绑定鼠标悬停事件并期望它们在触摸设备上具有1对1的关系。简单地说,我也有同样的问题,除了不使用实时模型之外,我还没有找到解决方案,这有点糟糕,因为每次添加新的dom元素来继承这些属性时,你都必须重新初始化所有内容。

顺便说一句。

请尝试以下操作,以确定是否已将实时事件附加到该元素。

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

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

'.data("init", true)' 

以上内容防止了名称空间被不需要的东西弄得一团糟,因为一旦附加了draggable就总是正确的,并且可以很容易地删除draggable方法。