2013-05-14 89 views
0

事情是,我得到了这个帮助从某人拖动一个div,但如果你想向下滚动/向上它是不可能的,与此代码,这将不会发生:jquery拖动水平滚动时的bug

$(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

欧凯使用解决了这个:如果块根据我的需求

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

所以整个是:

$(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(); 
});