今天在做實際手機端操作的時候,發現了這個
<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);
})
}
經測試,手機端顯示正常,可以彈出正常的滾動高度