Javascript 按钮onclick类已更改,但仅在第一次单击时工作

Javascript 按钮onclick类已更改,但仅在第一次单击时工作,javascript,jquery,onclick,click,Javascript,Jquery,Onclick,Click,单击开始按钮后,我想从start0设置classstart1。在此之后,我想在单击“重新开始”之后将start1更改为start2,依此类推。你能告诉我是什么问题吗?只有第一次点击才起作用 $(.start0”)。在(“单击”上,函数(){ $(“.start0”).attr(“类”、“btn btn成功开始1”); }); $(“.start1”)。在(“单击”,函数(){ $(“.start1”).attr(“类”,“btn btn成功开始2”); }); $(“.start2”)。在(“

单击开始按钮后,我想从
start0
设置class
start1
。在此之后,我想在单击“重新开始”之后将
start1
更改为
start2
,依此类推。你能告诉我是什么问题吗?只有第一次点击才起作用

$(.start0”)。在(“单击”上,函数(){
$(“.start0”).attr(“类”、“btn btn成功开始1”);
});
$(“.start1”)。在(“单击”,函数(){
$(“.start1”).attr(“类”,“btn btn成功开始2”);
});
$(“.start2”)。在(“单击”,函数(){
$(“.start2”).attr(“类”、“btn btn成功开始t3”);
});


开始
当您使用类似于
.click()
.on()
的东西时,您将单击事件绑定到满足选择器的元素。“找到这个元素,给它这个事件”

但是你在做

 $(".start1").on("click", function () {
        $(".start1").attr("class", "btn btn-success start2");
  });
…在
.start1
存在之前,依此类推

这是模糊的,我建议用不同的方式来做,但为了将您推向正确的方向,下面是重新格式化的代码,以满足您的意图:

$(".start0").on("click", function () {
    $(".start0").attr("class", "btn btn-success start1");
    $(".start1").on("click", function () {
        $(".start1").attr("class", "btn btn-success start2");
        $(".start2").on("click", function () {
            $(".start2").attr("class", "btn btn-success start3");
        });
    });
});

就我个人而言,我可能会这样做

var i = 0;
$('.btn-success').click(function() {
   $(this).removeClass('start'+i);
   i++;
   $(this).addClass('start'+i);
});

使用on()方法附加的事件处理程序将适用于当前和将来的元素(如脚本创建的新元素)。但是你的未来元素。start1等没有绑定。 所以这样做,您可以通过在控制台中观看来理解

$(.start0”)。在(“单击”上,函数(){
$(“.start0”).attr(“类”、“btn btn成功开始1”);
控制台日志(1);
$(“.start1”)。在(“单击”,函数(){
$(“.start1”).attr(“类”,“btn btn成功开始2”);
控制台日志(2);
$(“.start2”)。在(“单击”,函数(){
$(“.start2”).attr(“类”、“btn btn成功开始t3”);
控制台日志(3);
});
});  

});没问题。如果你认为这是你的问题的一个很好的解决办法:考虑不到,必须等待1分钟:谢谢!另外,正如我提到的,考虑一下我刚才添加的JSFIDLE链接。我认为这可能是一个比绑定这么多事件更干净的解决方案!