我正在做一种旋转木马,我也需要它在触摸设备上工作...... 一切正常但现在我正在尝试实现鼠标拖动事件我几乎没有问题......
HTML看起来类似于:
<div class="mover">
<ul class="wrapper">
<li>
<div class="t">
<div class="tc">
<p>1</p>
</div>
</div>
</li>
<li>
<div class="t">
<div class="tc">
<p>2</p>
</div>
</div>
</li>
<li>
<div class="t">
<div class="tc">
<p>3</p>
</div>
</div>
</li>
</ul>
</div>
我省略了各种控件,因为这个范围不需要。
我正在尝试实现的js功能如下所示:
var startDragPosition = false;
var $mover = $('.mover');
var $wrapper = $('.wrapper');
function startDrag( event ) {
event.preventDefault();
if ( $wrapper.triggerHandler( 'isScrolling' ) ) {
startDragPosition = false;
return;
}
startDragPosition = event.pageX;
$mover.bind(
'mousemove',
function( e ) {
$mover.css({
'marginLeft': -(300 + startDragPosition - e.pageX)
});
}
);
}
function stopDrag( event ) {
event.preventDefault();
$mover.unbind('mousemove');
if ( startDragPosition ) {
var currentDragPosition = event.pageX;
var direction = false;
if ( startDragPosition < currentDragPosition ) {
direction = 'prev';
} else if ( startDragPosition > currentDragPosition ) {
direction = 'next';
}
if ( direction ) {
$wrapper.trigger( direction );
$mover.animate({
'left': ((direction == 'next') ? '-=' : '+=') + 300
}, 'slow');
}
}
startDragPosition = false;
}
$mover.bind('mousedown', startDrag)
$mover.bind('mouseup', stopDrag)
$mover.bind('mouseleave', stopDrag);
其他控件的移动基于left
元素的.mover
位置。
我想做的是:
我正在努力尝试,但我无法理解如何让它正常运作......我认为接近解决方案......
JsFiddle:http://jsfiddle.net/Ttt93/