如何使一个jQuery UI’draggable()’div可拖动触摸屏?

如何使一个jQuery UI’draggable()’div可拖动触摸屏?,第1张

概述我有一个jQuery UI draggable()在Firefox和Chrome工作。用户界面概念基本上是点击创建一个“post-it”类型的项目。 基本上,我点击或点击div#一切(100%高和宽)监听点击,并显示输入textarea。你添加文本,然后当你完成它保存它。您可以拖动此元素。这是正常的浏览器,但在iPad上,我可以测试,我无法拖动项目。如果我触摸选择(它然后昏暗稍微),我不能然后拖动 我有一个jquery UI draggable()在firefox和Chrome工作。用户界面概念基本上是点击创建一个“post-it”类型的项目。

基本上,我点击或点击div#一切(100%高和宽)监听点击,并显示输入textarea。你添加文本,然后当你完成它保存它。您可以拖动此元素。这是正常的浏览器,但在iPad上,我可以测试,我无法拖动项目。如果我触摸选择(它然后昏暗稍微),我不能然后拖动它。它不会向左或向右拖动。我可以向上或向下拖动,但我不拖动单个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();    }});

我的STATE对象处理保存注释。

Onload,这是整个HTML体:

<body>     <div ID="everything"></div> <div  ID="IDdd1b0969-c634-8876-75a9-b274ff87186b" >Whatever dude</div> <div  ID="ID8a129f06-7d0c-3cb3-9212-0f38a8445700" >Appointment 11:45am</div> <div  ID="IDe92e3d13-afe8-79d7-bc03-818d4c7a471f" >What do you think of a board where you can add writing as much as possible?</div> <div  ID="IDef7fe420-4c19-cfec-36b6-272f1e9b5df5" >This was submitted</div> <div  ID="ID93b3b56f-5e23-1bd1-ddc1-9be41f1efb44" >Hello world from iPad.</div> </body>

所以,我的问题是真的:我如何使这项工作更好在iPad上?

我不是在jquery UI上设置,我想知道这是我做错了jquery UI或jquery,或者是否可能有更好的框架做跨平台/向后兼容的draggable()元素工作为触摸屏UI。

更多关于如何编写UI组件的一般性意见也将受到欢迎。

谢谢!

更新:
我能够简单地链接到我的jquery UI draggable()调用,并获得正确的可拖动性在iPad上!

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

jQuery Touch plugin做了窍门!

解决方法 浪费了很多小时后,我遇到了这个!

jquery-ui-touch-punch

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

我有这工作在iPad和iPhone

$('#movable').draggable({containment: "parent"});
总结

以上是内存溢出为你收集整理的如何使一个jQuery UI’draggable()’div可拖动触摸屏?全部内容,希望文章能够帮你解决如何使一个jQuery UI’draggable()’div可拖动触摸屏?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1088139.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存