私は非常にiphone-yのスライダー要素を作成しました。これは、全体的な水平方向の動きが制限され(0〜400ピクセルで、垂直方向には移動しません)、200ピクセルのマークを通過すると400ピクセルの「コンテナ」のいずれかの側に「スナップ」します。ドラッグが終了しました。Firefoxで完璧に動作します。Safariでは、要素をこの400pxコンテナの両端に配置するonEnd関数が呼び出されることはありません。さらに、ドラッグ可能な要素がマウスカーソルに「固定」され、アニメーションを終了するためにページをリロードする必要があります。
これが私のコードです
<div style="width:100px;height: 60px;background-color:#000;z-index:999" id="dragtest" />
<script language="JavaScript" type="text/javascript">
new Draggable('dragtest', { constraint: 'horizontal',
onEnd: function(e, me) {
console.debug("!!!")
element = e.element
x = element.style.left
x = x.gsub('px','')
if (x >= 200) {
$('dragtest').style.left = 400+'px';
}
if (x < 200) {
$('dragtest').style.left = 0+'px';
}
console.debug("Snapping to ", element.style.left, " (x was ", x, ")")
return true;
},
snap: function(x, y) {
ret_x = x
ret_y = y
if (x >= 400) {
ret_x = 400
}
if (x <= 0) {
ret_x = 0
}
return [ret_x,ret_y]
}
});
</script>
ありがとう!アンドリュー