1 回答

TA貢獻1853條經驗 獲得超18個贊
function comeBack(comeBack,flag){
//這里用this.flag是給你的window加了flag屬性
//第一次沒有初始化,是undefined,走else,else里設為true,第二次走if
if(this.flag){
$(comeBack).css('display','block');
this.flag = false;
}else{
$(comeBack).css('display','none');
this.flag = true;
};
};
$('#comeBack').on('click',function(){
//這個flag1是局部變量,每次進來都會初始化一次,傳進去永遠是true,只執行if,不是沒有效果
var flag1 = true;
comeBack('#comeBack .img2',flag1);
});
正確做法:flag放在外面,作為全局變量
//實際聲明的是window.flag
var flag = true;
//實際聲明的是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');
});
推薦做法:使用類+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');
}
});
添加回答
舉報