0

我正在构建一个网络应用程序并尝试使其具有触控功能。

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

4

0 回答 0