事情是,我从这里有人帮助拖动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容器的当前高度吗?
感谢。
答案 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();
});