Я создаю веб-приложение и пытаюсь сделать его сенсорным.
У меня есть список, который нужно прокрутить (я сейчас использую iScroll)
Элементы в списке можно нажимать.
Элементы в списке можно перетаскивать (я надеюсь).
Я использую следующий код для отключения щелчков при прокрутке
var myScrollingList = new iScroll('list_scrolling' ,
{
onScrollMove: function() {
$('a').bind('click', function(e){ e.preventDefault();});
},
onScrollEnd : function(){
$('a').unbind('click');
}
});
Я использую следующий код (с jQuery longclick), чтобы определить разницу между кликом и длинным кликом, чтобы у меня был триггер при длинном щелчке при перетаскивании
$('a.item').click(500,function(ev){
console.log('long-click');
ev.target.draggable({
helper: function(){
return jQuery(this).clone().appendTo('body').css('zIndex',500);
}
});
return false;
});
$('a.item').click(function(){
console.log('short click');
return false;
});
Хорошая новость заключается в том, что я могу прокручивать, не вызывая «длинный щелчок».
Проблемы двоякие
1) обычный клик срабатывает в конце прокрутки, но не «короткий клик», так что это обычное событие клика без JavaScript, которое запускается.
2) мой ev.target.draggable не выполняет перетаскивание цели. Есть ли способ превратить эту цель в перетаскиваемый элемент? Или мне лучше просто клонировать элемент, а потом каким-то образом сделать клон перетаскиваемым? Или любые другие предложения.