我在創建PhoneGap應用程序中的基於拖放的菜單時遇到問題。我嘗試了一些插件,例如jquery.mobiledraganddrop.js(http://www.stevefenton.co.uk/Content/Jquery-Mobile-Drag-And-Drop/)它沒有工作,並嘗試使用jQuery的「touch」事件自己編寫此功能手機(動畫雖然不流暢)。他們中的任何一件都不足以滿足我的事業。使用PhoneGap和pep.jquery.js在Android上拖放
最終我發現pep.jquery.js(http://pep.briangonzalez.org/)插件似乎是完美的,但是,一些問題發生了,我將在稍後描述。
下面介紹的代碼背後的想法是,菜單項顯示爲統一放置在圓周上的令牌。只要令牌在圓心中丟失,就會選擇菜單選項。如果在觸摸事件結束時令牌不夠接近圓心,則會移回原始位置。
的問題是:在PC上拖動的作品,但確實不工作在所有的的Android手機上,touchend事件,當我停止拖動的令牌不發生(我知道的事實marginLeft和marginTop設置爲0,並且不會導致令牌移動到原始位置 - 爲了調試目的,我將其留下)。
$(document).ready(function(){
var centerX = 240;
var centerY = 440;
var radius = 180;
var internalRadius = 86;
var tokenNumber = $("#circle .token").length;
reloadTokens(tokenNumber, radius, 0);
$(".token").pep({
cssEaseDuration: 0,
activeClass: "activeToken"
});
$("#token").bind("touchend",function(){
$(this).forceStop();
$(this).animate({
marginLeft: 0,
marginTop: 0
}, "fast", "easein");
});
});
function reloadTokens(tokenNumber, radius, additionalOffset){
var degreeOffset = 60;
var i = 0;
$(".token").each(function(){
degree = (i * (360/tokenNumber) - degreeOffset + additionalOffset) % 360;
var tokenX = radius * Math.cos(degree * (Math.PI/180)) + radius;
var tokenY = radius * Math.sin(degree * (Math.PI/180)) + radius;
$(this).css({
marginLeft: tokenX,
marginTop: tokenY
});
i++;
});
}
對此代碼的任何幫助將不勝感激。 :)我也會很高興,如果你給我另一個想法如何處理使用手機的拖放,而不是我之前描述的方法。