在Drag UI中处理Anchor Tag事件

时间:2011-10-12 18:47:38

标签: javascript jquery css javascript-events java-metro-framework

tl;博士JSFiddle网址:http://jsfiddle.net/66Mck/

我正在使用Drag UI,我在拖动界面中遇到<a>标签时出现问题。

我希望人们能够在UI中的任何位置拖动,包括<a>标签,因为它们是一个很大的地铁风格的瓷砖。

目标是,如果他们点击<a>并拖动少于20像素,则会触发链接,否则拖动应该只是移动面板。

有关的整个事件如下,但要关注的部分是:

if (Math.abs(distance - initialPosition) > 20) {
 $('a').mouseup(function (e) { e.preventDefault(); });
}

以下全部活动:

$('#panorama').mousedown(function (e) {
    initialPosition = e.pageX - $('#panorama').position().left;
    previousPosition = $('#panorama').position().left;
    $(document).mousemove(function (e) {
        distance = e.pageX - initialPosition;
        $('#panorama').css({ 'left': distance });
        if (Math.abs(distance - initialPosition) > 20) {
            $('a').mouseup(function (e) { e.preventDefault(); });
        }
        return false;
    });
    $(document).one('mouseup', function () {
        $(document).unbind();
        if (snapTo) {
            metroUI.intelliIncrement();
        }
    });
    return false;
});

目前,拖动长度传感器工作正常,但.click().mouseup()都没有处理该事件,因为.mousedown()的{​​{1}}部分已在父元素中触发.click()

1 个答案:

答案 0 :(得分:1)

通过(a)修复距离计算和(b)我的否定<a>代码click事件而不是mouseup来按照您的方式工作。

更新了你的小提琴。

mouseup处理程序中添加了一些调试代码。

此处更新了小提琴:http://jsfiddle.net/66Mck/29/