1 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
function comeBack(comeBack,flag){
//這里用this.flag是給你的window加了flag屬性
//第一次沒(méi)有初始化,是undefined,走else,else里設(shè)為true,第二次走if
if(this.flag){
$(comeBack).css('display','block');
this.flag = false;
}else{
$(comeBack).css('display','none');
this.flag = true;
};
};
$('#comeBack').on('click',function(){
//這個(gè)flag1是局部變量,每次進(jìn)來(lái)都會(huì)初始化一次,傳進(jìn)去永遠(yuǎn)是true,只執(zhí)行if,不是沒(méi)有效果
var flag1 = true;
comeBack('#comeBack .img2',flag1);
});
正確做法:flag放在外面,作為全局變量
//實(shí)際聲明的是window.flag
var flag = true;
//實(shí)際聲明的是window.comeBack,它的this就是window
function comeBack(comeBack){
if(this.flag){
$(comeBack).css('display','block');
this.flag = false;
}else{
$(comeBack).css('display','none');
this.flag = true;
};
};
$('#comeBack').on('click',function(){
comeBack('#comeBack .img2');
});
推薦做法:使用類(lèi)+css控制
<div id="#comeBack">
<img class="img2 hidden"></img>
</div>
.hidden {
display: none;
}
$('#comeBack').on('click',function(){
$img = $(this).children('.img2');
if($img.hasClass('hidden')){
$img.removeClass('hidden');
}else{
$img.addClass('hidden');
}
});
或者data api
<div id="comeBack" data-status="hidden">
<img class="img2"></img>
</div>
$('#comeBack').on('click',function(){
$this = $(this);
status = $this.data('status');
if(status === 'hidden'){
$this.children('.img2').css('display', 'block');
$this.data('status', 'show');
}else{
$this.children('.img2').css('display', 'none');
$this.data('status', 'hidden');
}
});
添加回答
舉報(bào)