jQuery UI Sortable disables scroll on Android

jQuery UI Sortable disables scroll on Android

I use jQuery UI Sortable at my web. The problem is that the region of a sortable element lose touch responsiveness on Android devices, so the page becomes unscrollable. It occurs even if the Sortable function is not active. 

I looked into jQuery UI source code and found _refreshItems function is triggering this problem, but cannot figure out how to fix this.

This problem is reproducible on Android devices and Chrome's Developer Tools with the mobile emulation enabled. It is not reproducible on iPhone.

I use jQuery UI Touch Punch to use Sortable on touch devices, but adding/removing it does not affect this problem.

I searched similar problems on the web and stackoverflow, but they were different problems.

The entire html to test this problem is the following. You can see the Item area does not respond to touch at all, when Sortable is disabled.

  1. <!doctype html>
  2. <html lang="en">
  3.     <head>
  4.         <meta charset="utf-8">
  5.         <meta name="viewport" content="width=device-width, initial-scale=1">
  6.         <title>jQuery UI Sortable Test</title>
  7.         <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  8.         <style>
  9.             #sortable { list-style-type: none; margin: 0; padding: 0; width: 100%; }
  10.             #sortable li { margin: 0; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; }
  11.             #sortable li span { position: absolute; margin-left: -1.3em; }
  12.         </style>
  13.         <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  14.         <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  15.         <script>
  16.             $(function () {
  17.                 $("#sortable").sortable({disabled : true});
  18.             });
  19.         </script>
  20.     </head>
  21.     <body>
  22.         <ul id="sortable">
  23.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
  24.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
  25.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
  26.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
  27.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
  28.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
  29.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li>
  30.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 8</li>
  31.             <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 9</li>
  32.         </ul>
  33.         1<br>
  34.         2<br>
  35.         3<br>
  36.         4<br>
  37.         5<br>
  38.         6<br>
  39.         7<br>
  40.         8<br>
  41.         9<br>
  42.         10<br>
  43.         ...
  44.         50<br>
  45.     </body>
  46. </html>