我已经有一段时间在网站上进行jquery排序了。它很棒;然而,我正在通过ipad进行更多移动编辑,而且我没有成功通过触摸设备使jquery排序。
我已经查看了此处的其他帖子以及搜索过的谷歌。我终于找到了一个我半熟悉的解决方案,因为我从来没有对触摸设备的开发工作太多。以下是我的代码。可排序仍可在我的笔记本电脑浏览器上正常运行;但是,在触摸设备(ipad)上不起作用
当我触摸列表时,它会在整个<ul>
列表后面放置一个灰色背景,然后如果我继续按住,它会选择我的手指所在的单词。它不允许我拖动任何<li>
元素。
以下是我的代码
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.css" />
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.0-alpha.2/jquery.mobile-1.4.0-alpha.2.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript">
/*!
* jQuery UI Touch Punch 0.2.3
*
* Copyright 2011–2014, Dave Furfero
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Depends:
* jquery.ui.widget.js
* jquery.ui.mouse.js
*/
!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
</script>
<script type="text/javascript">
//$(document).bind('pageinit', function() {
$(document).ready(function(){
$('#sortable').sortable({
axis: 'y',
update: function (event, ui) {
var data = $(this).sortable('serialize');
// AJAX POST to server
$.ajax({
data: data,
type: 'POST',
url: 'inc/refresh_order.php?table=Product_Sections',
success: function(response) {
//alert(response);
var message = "<p>Succesfully updated order of Product Sections</p>";
$('#message').html(message)
}
});
}
});
$( "#sortable" ).bind( "sortstop", function(event, ui) {
$('#sortable').listview('refresh');
});
$( "#sortable" ).disableSelection();
});
</script>
以下是列表(我实际上是通过数据库查询生成列表...所以这是一个带样式的随机列表)
<ul id="sortable" class="Sortable_List">
<li id="item-1">item 1</li>
<li id="item-2">item 2</li>
<li id="item-3">item 3</li>
</ul>
任何帮助都会很棒。不确定我做错了什么。