为了账号安全,请及时绑定邮箱和手机立即绑定

为什么有的时候点击事件触发第二次才执行?

为什么有的时候点击事件触发第二次才执行?

哆啦的时光机 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 关注
  • 743 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号