jquery ui sortable 拖动时位置错位

这里需要说明的一点是,如果页面没有产生滚动(即浏览器右侧的垂直滚动条处于最顶端),那么,是不会产生错位的。

所以这个bug肯定是由于scroll产生的。

通过长时间的定位及追踪,最后发现在5465行(JqueryUI版本:1.11.4)的这行语句产生了问题:

po.top += this.scrollParent.scrollTop();

parent.top通过这个语句后,值产生了突变。

注释掉,就好了。

对应的min文件可以使用正则表达式搜索:\+= *this\.scrollParent\.scrollTop

一共会发现两处,可以两处都去掉,也可以只去掉第二处(下图高亮的部分去掉即可):

20160220100119425.jpg

研究一下为啥会这样呢?原来,在sortable的时候,JqueryUI会给div添加一个this.cssPosition,让它变成absolute。

就会进入这个if子句,将top的值叠加上滚动的值,就产生了异常了。


发表评论:

Powered By Z-BlogPHP 1.7.0

Copyright Www.Niaoseo.Com Rights Reserved.