0

问题是我从这里的某人那里得到了这个帮助来拖动一个 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 容器的当前高度吗?

谢谢。

4

1 回答 1

0

Okey 通过使用以下方法解决了这个问题:

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

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

$(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();
}); 
于 2013-05-15T15:07:32.493 回答