如何使 jQuery UI 'draggable()' div 可拖动用于触摸屏?

2023-11-26

我有一个 jQuery 用户界面draggable()适用于 Firefox 和 Chrome。用户界面概念基本上是单击以创建“便利贴”类型的项目。

基本上,我点击或点击div#everything(100% 高和宽)监听点击,并显示输入文本区域。您添加文本,完成后它会保存它。您可以拖动该元素。这适用于普通浏览器,但在 iPad 上我可以测试,但我无法拖动项目。如果我触摸进行选择(然后它会稍微变暗),我就无法拖动它。它根本不会向左或向右拖动。我can向上或向下拖动,但我不会拖动个人div,我正在拖动整个网页。

这是我用来捕获点击的代码:

$('#everything').bind('click', function(e){
    var elem = document.createElement('DIV');
    STATE.top = e.pageY;
    STATE.left = e.pageX;
    var e = $(elem).css({
        top: STATE.top,
        left: STATE.left
    }).html('<textarea></textarea>')
    .addClass('instance')
    .bind('click', function(event){
        return false;
    });
    $(this).append(e);
});

这是我用来“保存”注释并将输入 div 变成显示 div 的代码:

$('textarea').live('mouseleave', function(){
    var val = jQuery.trim($(this).val());
    STATE.content = val;
    if (val == '') {
        $(this).parent().remove();
    } else {
        var div  = $(this).parent();
        div.text(val).css({
            height: '30px'
        });
        STATE.height = 30;
        if ( div.width() !== div[0].clientWidth || div.height () !== div[0].clientHeight ) {
            while (div.width() !== div[0].clientWidth || div.height () !== div[0].clientHeight) {
                var h = div.height() + 10;
                STATE.height = h;
                div.css({
                    height: (h) + 'px'
                });     // element just got scrollbars
            }
        }
        STATE.guid = uniqueID()
        div.addClass('savedNote').attr('id', STATE.guid).draggable({
            stop: function() {
                var offset = $(this).offset();
                STATE.guid = $(this).attr('id');
                STATE.top = offset.top;
                STATE.left = offset.left;
                STATE.content = $(this).text();
                STATE.height = $(this).height();
                STATE.save();
            }
        });
        STATE.save();
        $(this).remove();
    }
});

当我加载已保存笔记的页面时,我有以下代码:

$('.savedNote').draggable({
    stop: function() {
        STATE.guid = $(this).attr('id');
        var offset = $(this).offset();
        STATE.top = offset.top;
        STATE.left = offset.left;
        STATE.content = $(this).text();
        STATE.height = $(this).height();
        STATE.save();
    }
});

My STATE对象处理保存注释。

Onload,这是整个 html 正文:

<body> 
    <div id="everything"></div> 
<div class="instance savedNote" id="iddd1b0969-c634-8876-75a9-b274ff87186b" style="top:134px;left:715px;height:30px;">Whatever dude</div> 
<div class="instance savedNote" id="id8a129f06-7d0c-3cb3-9212-0f38a8445700" style="top:131px;left:347px;height:30px;">Appointment 11:45am</div> 
<div class="instance savedNote" id="ide92e3d13-afe8-79d7-bc03-818d4c7a471f" style="top:144px;left:65px;height:80px;">What do you think of a board where you can add writing as much as possible?</div> 
<div class="instance savedNote" id="idef7fe420-4c19-cfec-36b6-272f1e9b5df5" style="top:301px;left:534px;height:30px;">This was submitted</div> 
<div class="instance savedNote" id="id93b3b56f-5e23-1bd1-ddc1-9be41f1efb44" style="top:390px;left:217px;height:30px;">Hello world from iPad.</div> 

</body>

所以,我的问题实际上是:如何才能让这项功能在 iPad 上更好地运行?

我没有设置 jQuery UI,我想知道这是否是我对 jQuery UI 或 jQuery 做错的事情,或者是否有更好的框架来执行跨平台/向后兼容的draggable()元素适用于触摸屏 UI。

关于如何编写这样的 UI 组件的更多一般性评论也将受到欢迎。

Thanks!


UPDATE:我可以简单地将其链接到我的 jQuery UI 上draggable()调用并在 iPad 上获得正确的可拖动性!

.touch({
    animate: false,
    sticky: false,
    dragx: true,
    dragy: true,
    rotate: false,
    resort: true,
    scale: false
});

The jQuery 触摸插件成功了!


在浪费了很多时间之后,我发现了这个!

jquery-ui-触摸打孔

它将点击事件转换为点击事件。 记得在jquery之后加载脚本。

我在 iPad 和 iPhone 上都能正常使用

$('#movable').draggable({containment: "parent"});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 jQuery UI 'draggable()' div 可拖动用于触摸屏? 的相关文章

随机推荐

  • ASP .NET MVC 在每个字段级别禁用客户端验证

    我正在使用带有数据注释和 jQuery 验证插件的 ASP NET MVC 3 有没有办法标记某个字段 或某个数据注释 只能在服务器端进行验证 我有一个带有屏蔽插件的电话号码字段 正则表达式验证器在用户端变得疯狂 正则表达式只是一个自动防故
  • 无法让Python从不同的文件夹导入

    我似乎无法让 Python 在子文件夹中导入模块 当我尝试从导入的模块创建该类的实例时出现错误 但导入本身成功 这是我的目录结构 Server server py Models user py 这是server py的内容 from sys
  • 如何使用套接字通过互联网发送数据?

    我想通过桌面应用程序通过互联网发送数据 我对套接字了解一点 我已经在局域网内传输数据 但现在我想通过互联网传输数据 传输大量和少量数据的最佳方式是什么 我的系统已连接到可以访问互联网的服务器 我的系统的 IP 地址是动态的 我不知道如何将数
  • 计算数据帧组内的差异

    假设我有一个包含 3 列的数据框 日期 股票行情 值 没有索引 至少在开始时是这样 我有很多日期和股票行情 但每个 ticker date 元组是唯一的 但显然 相同的日期将显示在许多行中 因为它会出现在多个代码中 并且相同的代码会出现在多
  • 是否存在使用数据库 1:1 关系有意义的时候?

    前几天我在思考规范化 我突然想到 我想不出数据库中应该存在 1 1 关系的时候 Name SSN 我会把它们放在同一张桌子上 PersonID AddressID 再说一遍 同一张桌子 我可以想出无数个 1 多或多 多 带有适当的中间表 的
  • Perl 正则表达式中的转义特殊字符

    我正在尝试匹配 Perl 中的正则表达式 我的代码如下所示 my source Hello version Goodbye version my pattern Hello version if source m pattern print
  • 如何在 Android Javadoc 中引用 XML 文件? [复制]

    这个问题在这里已经有答案了 有没有办法使用 JavaDoc 链接来引用 Android XML 文件res folder 就像是 link res values custom strings xml link com yourApp R l
  • 如何备份SQL Server代理作业?

    如何备份和恢复 SQL Server 2005 代理作业计划 msdb 数据库是所有作业所在的地方 它是系统数据库之一
  • add2virtualenv(virtualenv 包装器)不适用于 scipy

    我想创建一个没有全局 python 包的 virtualenv 但具有共享的 scipy 发行版 安装 scipy 需要相当长的时间 我不想太频繁地走过场 所以我跑add2virtualenv Library Python 2 7 site
  • 如何通过不可靠的网络同步媒体播放?

    我希望我可以在一台计算机上播放音乐或视频 并让第二台计算机同步播放相同的媒体 例如 我可以同时听到两台计算机的扬声器的声音 这听起来并不好笑 我想通过 Wi Fi 来完成此操作 但 Wi Fi 有点不可靠 从算法上来说 解决这个问题的最佳方
  • @Autowired 对象获取空值

    尝试建立一个项目 但通过 Spring 自动装配对象失败 package se hsr web public class TestRunner public static void main String args ContactDAO c
  • 使用 git 时 Mac/Windows 的文件权限问题

    我运行以下代码从 Windows git 存储库中提取文件 git pull Volumes sucho Desktop git setup 我按如下方式连接 Windows 目录 tell application Finder mount
  • 忽略 querySelectorAll 中的大小写敏感性

    我有这个代码 a href Click a a href Click a a href Click a a href Click a 现在 使用console log document querySelectorAll a href jav
  • “该节点不是使用 replSet 选项启动的”

    我正在学习MongoDB大学 s M101P 面向开发人员的 MongoDB课程 我在用连线虎 on MongoDB 3 2 我目前的主题是副本集 该课程要求我使用以下代码创建一个副本集 mongod replSet rs1 logpath
  • 对齐wpf选项卡控制条

    我正在尝试在右侧对齐选项卡控制条 需要明确的是 我希望选项卡位于顶部 tabstripplacement 但在右侧对齐 的标题TabItem位于类型面板中TabPanel 我们可以添加HorizontalAlignment Right 在资
  • Angular.js 和 Adsense

    我正在尝试在我的 angular js 应用程序上放置广告 我做了一些阅读 发现不可能只复制并粘贴正常的 adsense 代码 我听说你应该 用嵌入将其包装在指令中 我能找到的唯一示例是另一个 Stackoverflow 帖子 Angula
  • 从代码更改清单元数据

    我有一个使用广告的应用程序 广告 ID 通过元数据标签在清单 ID 中设置 在某些情况下 我想在启动应用程序时更改此标签 某些本地化版本的 ID 不同 我可以在代码中做到这一点吗 清单元数据无法在运行时更改 您应该查看您的广告库是否允许直接
  • Eclipse Android SDK - 构建工作区时出错

    我已使用 Android SDK Manager 更新了我的软件包 并单击 帮助 gt 检查更新并更新了已安装的插件 提示我重新启动eclipse 现在重新启动后 我收到以下错误代码 Building workspace has encou
  • 在 Swift SpriteKit 项目中播放声音?

    当我运行这段代码时 runAction SKAction playSoundFileNamed Click mp3 waitForCompletion false 我的应用程序崩溃了 由于未捕获的异常 NSInvalidArgumentEx
  • 如何使 jQuery UI 'draggable()' div 可拖动用于触摸屏?

    我有一个 jQuery 用户界面draggable 适用于 Firefox 和 Chrome 用户界面概念基本上是单击以创建 便利贴 类型的项目 基本上 我点击或点击div everything 100 高和宽 监听点击 并显示输入文本区域