亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么有的時候點擊事件觸發第二次才執行?

為什么有的時候點擊事件觸發第二次才執行?

哆啦的時光機 2019-02-12 17:19:25
function comeBack(comeBack,flag){    if(this.flag){            $(comeBack).css('display','block');        this.flag = false;    }else{        $(comeBack).css('display','none');        this.flag = true;    };};$('#comeBack').on('click',function(){    var flag1 = true;    comeBack('#comeBack .img2',flag1);});
查看完整描述

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');

    }

});


查看完整回答
反對 回復 2019-02-21
  • 1 回答
  • 0 關注
  • 736 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號