为什么我whichfloor的值只能获取一次
来源:5-3 标识楼层号和抵达指定楼层
CC陈十一
2019-04-26 18:35:08
$('.category-list>.dropdown').dropdown({
css3:true,
js:true,
animation:'fade',
active:'category'
}).on('dropdown-show',function(){
loadOnce($(this),createCategoryDetails)
});
function createCategoryDetails($elem,data){
var html='';
for(var i=0;i<data.length;i++){
html+='<dl class="category-details cf"><dt class="category-details-title fl"><a href="#" target="_blank" class="category-details-title-link">'+data[i].title+'</a></dt><dd class="category-details-item fl">';
for(var j=0;j<data[i].items.length;j++){
html+='<a href="#" target="_blank" class="link">'+data[i].items[j]+'</a>';
}
html+='</dd></dl>';
}
$elem.find('.dropdown-layer').html(html);
}
//menu
$('.menu').dropdown({
css3:true,
js:true,
animation:'fade',
active:'menu'
});
function loadOnce($elem,success){
var dataLoad=$elem.data('load');
if(!dataLoad) return;
if(!$elem.data('loaded')){
$elem.data('loaded',true);
$.getJSON(dataLoad).done(function(data){
if(typeof success==='function')success($elem,data);
}).fail(function(){
$elem.data('loaded',false);
});
}
}
//header-search
var $headersearch=$('#header-search');
var html='',
maxNum=10;
$headersearch.on('search-getData',function(e,data){
var $this=$(this);
html=createHeaderSearchLayer(data,maxNum);
$this.search('appendLayer',html);
if(html){
$this.search('showLayer');
}else{
$this.search('hideLayer');
}
}).on('search-noData',function(e){
$(this).search('hideLayer').search('appendLayer','');
}).on('click','.search-layer-item',function(){
console.log('1');
$headersearch.search('setInputVal',$(this).html());
$headersearch.search('submit');
});
$headersearch.search({
autocomplete:true,
css3:true,
js:false,
animation:'fade'
});
function createHeaderSearchLayer(data,maxNum){
var html='',
dataNum=data['result'].length;
if(dataNum===0){
return '';
}
for(var i=0;i<dataNum;i++){
if(i>=maxNum)break;
html+='<li class="search-layer-item">'+data['result'][i][0]+'</li>';
}
return html;
}
// slide
var $focusSlider=$('#slider');
$focusSlider.on('slider-show ',function(e,i,elem){
var $img=$(elem).find('.slider-img');
loadImg($img.data('src'),function(url){
$img.attr('src',url);
});
});
function loadImg(url,imgLoaded){
var image=new Image();
image.onload=function(){
if(typeof imgLoaded==='function')imgLoaded(url);
};
setTimeout(function(){
image.src=url;
},1000);
}
$('#slider').slider({
css3:true,
js:false,
animation:'slide',
activeIndex:0,
interval:2000
});
// floor
var $floor=$('.floor');
$floor.on('tab-show',function(e,index,elem){
})
$floor.tab({
css3:false,
js:false,
event:'mouseenter',
animation:'fade',
activeIndex:0
});
floorData=[
{floortop:$floor.eq(0).offset().top},
{floortop:$floor.eq(1).offset().top},
{floortop:$floor.eq(2).offset().top},
{floortop:$floor.eq(3).offset().top},
{floortop:$floor.eq(4).offset().top}
]
// floor html按需加载
var $win=$(window),
$doc=$(document);
// function isVisible(offsetTop,height) {
// var $win = browser.$win;
// return ($win.height() + $win.scrollTop() > offsetTop) && ($win.scrollTop() < offsetTop + height)
// }
function timeToShow(){
$floor.each(function(index,elem){
if(isVisible($(elem))){
$doc.trigger('floor-show',[index,elem])
}
});
}
function whichFloor(){
var num=-1;
$floor.each(function(index,elem){
var floordata=floorData[index];
num=index;
if($win.scrollTop()<floordata.floortop){
num=index-1;
return false;
}
});
return num;
}
console.log(whichFloor());1回答
同学你好,老师这边测试你的代码是没有问题的, 刷新页面的时候可以获取到对应的楼层数,示例:滚动到三楼后刷新页面,打印结果:

whichfloor这个方法是获取当前显示在顶部的楼层数, 所以每次刷新页面的时候只会输出一次
如果帮助到你,欢迎采纳
祝学习愉快~~~
相似问题