JQuery: 为什么我的拼图不能在手机上运行?
JQuery: Why is my puzzle not working on mobiles?
我是新来的,试着稍微熟悉一下论坛。
我刚刚完成编程 class (webforce3) 并尽我所能测试我的 classes.
我的第一个问题是关于 program/game 似乎无法在移动设备上运行的一点。
谁能告诉我这是为什么?
是因为jquery-ui还是我的代码有误?
script>
$(function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
});
$(document).ready(function(){
$('ul').each(function(){
// get current ul
var $ul = $(this);
// get array of list items in current ul
var $liArr = $ul.children('li');
// sort array of list items in current ul randomly
$liArr.sort(function(a,b){
// Get a random number between 0 and 10
var temp = parseInt( Math.random()*10 );
// Get 1 or 0, whether temp is odd or even
var isOddOrEven = temp%2;
// Get +1 or -1, whether temp greater or smaller than 5
var isPosOrNeg = temp>5 ? 1 : -1;
// Return -1, 0, or +1
return( isOddOrEven*isPosOrNeg );
})
// append list items to ul
.appendTo($ul);
});
});
</script>
最好是 post fiddle 看看发生了什么:
https://jsfiddle.net/scooterMaya/ujadw43e/2/
感谢您的帮助。我正在尝试修改我的在线简历@ http://michelcavro.net
您的问题似乎是触摸事件不会像鼠标拖动那样拖动您的图片。你需要用触摸来模拟鼠标事件
添加这些功能
function touchHandler(event) {
var touch = event.changedTouches[0];
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent({
touchstart: "mousedown",
touchmove: "mousemove",
touchend: "mouseup"
}[event.type], true, true, window, 1,
touch.screenX, touch.screenY,
touch.clientX, touch.clientY, false,
false, false, false, 0, null);
touch.target.dispatchEvent(simulatedEvent);
event.preventDefault();
}
function init() {
document.addEventListener("touchstart", touchHandler, true);
document.addEventListener("touchmove", touchHandler, true);
document.addEventListener("touchend", touchHandler, true);
document.addEventListener("touchcancel", touchHandler, true);
}
并从准备好的函数底部调用 init()!
这个解决方案来自 这个 SO
文章
更新后的工作 fiddle 是
here
我是新来的,试着稍微熟悉一下论坛。 我刚刚完成编程 class (webforce3) 并尽我所能测试我的 classes.
我的第一个问题是关于 program/game 似乎无法在移动设备上运行的一点。 谁能告诉我这是为什么?
是因为jquery-ui还是我的代码有误?
script>
$(function() {
$( "#sortable" ).sortable();
$( "#sortable" ).disableSelection();
});
$(document).ready(function(){
$('ul').each(function(){
// get current ul
var $ul = $(this);
// get array of list items in current ul
var $liArr = $ul.children('li');
// sort array of list items in current ul randomly
$liArr.sort(function(a,b){
// Get a random number between 0 and 10
var temp = parseInt( Math.random()*10 );
// Get 1 or 0, whether temp is odd or even
var isOddOrEven = temp%2;
// Get +1 or -1, whether temp greater or smaller than 5
var isPosOrNeg = temp>5 ? 1 : -1;
// Return -1, 0, or +1
return( isOddOrEven*isPosOrNeg );
})
// append list items to ul
.appendTo($ul);
});
});
</script>
最好是 post fiddle 看看发生了什么: https://jsfiddle.net/scooterMaya/ujadw43e/2/
感谢您的帮助。我正在尝试修改我的在线简历@ http://michelcavro.net
您的问题似乎是触摸事件不会像鼠标拖动那样拖动您的图片。你需要用触摸来模拟鼠标事件
添加这些功能
function touchHandler(event) {
var touch = event.changedTouches[0];
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent({
touchstart: "mousedown",
touchmove: "mousemove",
touchend: "mouseup"
}[event.type], true, true, window, 1,
touch.screenX, touch.screenY,
touch.clientX, touch.clientY, false,
false, false, false, 0, null);
touch.target.dispatchEvent(simulatedEvent);
event.preventDefault();
}
function init() {
document.addEventListener("touchstart", touchHandler, true);
document.addEventListener("touchmove", touchHandler, true);
document.addEventListener("touchend", touchHandler, true);
document.addEventListener("touchcancel", touchHandler, true);
}
并从准备好的函数底部调用 init()!
这个解决方案来自 这个 SO 文章
更新后的工作 fiddle 是 here