月度归档:9 月 2016

让jQuery UI draggable兼容移动端并且模拟click点击事件,兼容安卓

用jQyery UI的draggable可以很方便地在PC端实现页面元素的可拖放,不过jQyery UI不是为移动端而写的,因此这个draggable方法在手机上无效。这么普通的问题,当然已经有了现成的解决方法,那就是再加一个jQuery UI Touch Punch插件即可。jQuery UI Touch Punch下载点这里

这样组合后在手机上测试基本完美,不过很快发现在安卓手机上,无论是原生浏览器还是微信内置浏览器上,都无法在draggable的元素上执行click点击事件,其子元素也不行;在iOS上倒是一切正常。经过排查,发现其实并非click事件不能执行,而是安卓上对touch的敏感度实在太大,太容易覆盖掉click事件,其实快速的多点几次click还是有一定概率能执行的。但这样显然不符合项目的要求了,于是我考虑用touchstart-touchmove-touchend来做一些代替click的事。其实就是判断一下手指滑动的距离,距离大的就什么都不变,当做滑动,距离小的就当作click事件去做点击的事。

这种low问题就不多展开了,直接上代码, 查看详细 »