今天在做实际手机端操作的时候,发现了这个
<ul class="wind-alert-ul" style="transform-origin: 0px 0px 0px; position: absolute; top: -200px; left: 0px;"> <li> </li> <li>关闭</li> <li>低速</li> <li>中速</li> <li>高速</li> <li>关闭</li> <li>低速</li> <li>中速</li> <li>高速</li> <li>关闭</li> <li>低速</li> <li>中速</li> <li>高速</li> <li>关闭</li> <li> </li> </ul>
发现在滚动的时候,top的值是变化的,那么是不是可以通过这个top值来获取滚动的高度,结果又了如下的写法
onScrollEnd:function(){
var top=$(".wind-alert-ul").css("top");
alert(top);
var number=parseInt(top.split('px')[0].substring(1));
alert(number);
$(".ok").click(function(){
var text=$(".wind-alert-ul li:eq("+number+")").get(0);
$(".wind-set-b").text(text.innerHTML);
})
}
测试发现在电脑是可以的,但是实际上再手机端由于浏览器的差别会有锁不同,在uc上浏览器测试发现弹出的top值一直都是auto,如果是这样的话,那么number也就无法进行计算
发现了这个问题之后,请教了同事,其实在iscroll.js中可以使用y来获取滚动垂直初始位置,将位置转化为正数,然后可以通过除以Li的高度去找到现在处于的li的位置,由于在布局的时候,多加了一个 所以需要在位置上加上1,将其中的内容进行替换就可以了
修改后的代码如下:
onScrollEnd:function(){
console.log(this.y);
var number=(Math.abs(this.y))/50+1;
$(".ok").click(function(){
var text=$(".wind-alert-ul li:eq("+number+")").get(0);
$(".wind-set-b").text(text.innerHTML);
})
}
经测试,手机端显示正常,可以弹出正常的滚动高度