我正在构建一个网络应用程序并尝试使其具有触控功能。
我有一个需要滚动的列表(我目前正在使用 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 没有使目标拖动。有没有办法将该目标创建为可拖动元素?还是我最好只是克隆元素然后以某种方式将克隆设置为可拖动?或任何其他建议。