水平滚动时jquery draggable bug

时间:2013-05-14 19:10:04

标签: javascript jquery html draggable

事情是,我从这里有人帮助拖动div但是如果你想向下/向上滚动,那么用这段代码就不可能发生这种情况:

$(function() {
    $("#divname").draggable({
        start: function(event) {
            var content = $("#panel_content");

            // if we're scrolling, don't start and cancel drag
            if (event.originalEvent.pageX-content.offset().left > content.innerWidth())
            {
                $(this).trigger("mouseup");
                return false;
            }
        }
    });
});

现在,我可以尝试理解这项工作的方式,看起来很正常,深思熟虑。 我现在应该尝试获取offset.top并对content.innerHeight()进行验证,对吧?像这样:

event.originalEvent.pageY-content.offset().top > content.innerHeight()

事实上,我已经做了一个console.log来不断地看到这些值,并且innerHeight()始终是相同的(1242)并不重要我调整它的大小。为什么会这样?我应该使用另一个函数来获取div容器的当前高度吗?

感谢。

1 个答案:

答案 0 :(得分:0)

Okey通过使用:

解决了这个问题
event.originalEvent.pageY-content.offset().top > parent_content.innerHeight()

所以根据我的需要整个if-block是:

$(function() {
    $("#sendmessage-panel-overlay").draggable({
        start: function(event) {
            var content = $("#panel_content");
            var parent_container = $("#sendmessage-panel-overlay");

            // if we're scrolling, don't start and cancel drag
            if (event.originalEvent.pageX-content.offset().left > content.innerWidth() ||
                    event.originalEvent.pageY-content.offset().top > (parent_container.innerHeight() - 34))
            {                   
                $(this).trigger("mouseup");
                return false;
            }
        }
    }).resizable();
});