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()
答案 0 :(得分:1)
通过(a)修复距离计算和(b)我的否定<a>
代码click
事件而不是mouseup
来按照您的方式工作。
更新了你的小提琴。
在mouseup
处理程序中添加了一些调试代码。
此处更新了小提琴:http://jsfiddle.net/66Mck/29/