首页 > js多次点击问题

js多次点击问题

function showimg(){
    var clicktimes = 0;
    $(document).click(
        function(){
            if (clicktimes == 0) {$("#dou").show(2000);};
            clicktimes = 1;
            return;
        },
        function(){
            if (clicktimes == 1) {$("#bi").show(2000);};
            clicktimes = 2;
            return;
        },
        function(){
            if (clicktimes == 2) {$("#text_1").show(2000);};
            clicktimes = 3;
            return;
        },
        function(){
            if (clicktimes == 3) {$("#text_2").show(2000);};
            clicktimes = 4;
            return;
        },
        function(){
            if (clicktimes == 4) {$("#text_2").show(2000);};
            clicktimes = 5;
            return;
        }
        )
}

如何让其多次点击发生的事件不一样呢


function showimg() {

    var clicktimes = 0,//记录单击次数
        ids = ['#dou', '#bi', '#text_1', '#text_2', '#text_3'];//不同的次数对应的不同的id

    $(document).click(function() {
        var target = ids[clicktimes++];//从列表中取一个

        if (target) {//如果有的话
            $(target).show(2000);//显示
        }
    });
}

function showimg(){
    var clicktimes = 0;
    var els=['#dou','#bi','#text_1','#text_2'];   

    $(document).click(function () {
        $(els[clicktimes++]).show(2000);
    });
}

你可以在一个函数的内部进行判断啊


你可以使用one只绑定一个方法,在第一个方法执行完成的时候使用one绑定第三个,依次内推就好了


你的代码都写成这样了,为什么不找找其它的解决方案? 如果你实在是写不优雅,可以看jquerydbclick事件。


把5个函数的顺序倒过来写,先写4的、再写3的、……最后写0的


一般我是这样解决的。比如:
先假设或者手动在document DOM上绑定一个自定义属性data-idx="0",默认为你上述定义变量值。
$(function() {

$(document).on('click', function() {
    var idx = $(this).data('idx');
    if(!idx || idx == 0) {
        ...你要做的操作
        $(this).data('idx', (idx + 1));
    }else if(idx == 1) {
         ...你要做的操作
        $(this).data('idx', (idx + 1));
    }else if(...) {
        ...
    }
});

});
评论编辑器中编写,代码未测试!逻辑是这样哈

【热门文章】
【热门文章】