You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

父级Div设置Draggable后移动端子Div无法滚动的解决方案咨询

解决移动端父级draggable导致子级无法滚动的问题

我之前也碰到过这个坑,其实是jQuery UI的draggable默认会拦截父元素上的触摸事件,用来处理拖动逻辑,这就直接导致子元素的滚动事件被覆盖,在移动端没法正常滚动。这里有两个简单好用的解决办法,你可以按需选择:

方案一:用draggable的cancel选项

jQuery UI的draggable自带了cancel参数,专门用来指定哪些子元素不会触发父级的拖动行为。我们只需要把.table-lower设为这个参数的目标,这样触摸子元素时,父级的拖动就会被禁用,子元素就能正常滚动了。

修改后的JS代码如下:

$(function() { 
  $('.table').draggable({
    cancel: '.table-lower' // 指定子元素不触发父级拖动
  }); 
});

方案二:在子元素上阻止触摸事件冒泡

另一种思路是在子元素的触摸事件里,阻止事件向上冒泡到父级。这样父级的draggable就接收不到触摸信号,自然不会触发拖动,子元素的滚动就能正常工作。

添加这段JS代码即可:

$(function() { 
  $('.table').draggable();
  // 阻止子元素的触摸事件冒泡到父级
  $('.table-lower').on('touchstart touchmove', function(e) {
    e.stopPropagation();
  });
});

完整可运行示例

把HTML、CSS和JS整合起来的完整代码(别忘了引入jQuery UI,不然draggable没法生效):

<!DOCTYPE html>
<html>
<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
  <style>
    .table { 
      width:200px; 
      height:200px; 
      border: 1px solid black; 
      border-radius: 15px; 
      overflow:hidden; 
    } 
    .table-lower { 
      overflow-y:auto; 
      height: 100%; 
      padding: 10px;
    }
  </style>
</head>
<body>
  <div class="table">
    <div class="table-lower">
      <!-- 加足够多内容测试滚动 -->
      测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>
      测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>
      测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>测试滚动内容<br>
    </div>
  </div>

  <script>
    // 二选一使用方案代码
    // 方案一
    $(function() { 
      $('.table').draggable({
        cancel: '.table-lower'
      }); 
    });

    // 方案二
    // $(function() { 
    //   $('.table').draggable();
    //   $('.table-lower').on('touchstart touchmove', function(e) {
    //     e.stopPropagation();
    //   });
    // });
  </script>
</body>
</html>

内容的提问来源于stack exchange,提问作者user7531085

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:57