【问题标题】:Why does the click function not work after I change the class of a button?为什么更改按钮的类后点击功能不起作用?
【发布时间】:2015-05-23 02:03:22
【问题描述】:

我有一组用户点击的按钮(上一个和下一个)。

<a id="prev_btn" class="prev_1" href="#">Previous</a>
<a id="next_btn" class="next_1" href="#">Next</a>

当用户点击下一个按钮(.next_1)时,它会将按钮的类名更改为next_2,并将上一个按钮(.prev_1)更改为prev_2。一旦更改了类名,prev_2 设置的点击功能就不起作用了。

$('.next_1').click(function() {
  $('#next_btn').removeClass('next_1').addClass('next_2');
  $('#prev_btn').removeClass('prev_1 inactive').addClass('prev_2');
});

$('.prev_2').click(function() {
  alert('this works');
});

为什么我使用jquery更改类后点击功能不起作用?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这是因为绑定是在加载时定义的。如果您希望它们动态工作,请通过 LIVE 绑定点击。

    $('.prev_2').live('click', function() {
           alert('hi!');
    });
    

    【讨论】:

    • 这正是我想要的!非常感谢!唯一需要添加的是选择器的开头单引号。
    • 很高兴为您提供帮助,抱歉打错了。
    【解决方案2】:

    听起来您对这里的评估时间感到困惑; $('.prev_2') 获取当前具有“prev_2”类的所有元素,并对它们应用给定的操作;无论向此类中添加或删除哪些元素,它都不是保持有效的声明。

    如果您想要一个基于类的处理程序,您可以在文档级别注册一个 onclick 处理程序,并测试事件目标的类并进行相应的调度。但是,只使用特定按钮注册一个单击函数并在该处理程序中,在执行之前测试按钮的类会更简洁。

    【讨论】:

      【解决方案3】:

      $('.prev_2').click(...)被执行时,“上一个”按钮没有prev_2类,所以它没有被分配点击处理程序,只有当.click当前有那个类方法被 调用 将绑定该处理程序。

      您想查看.live jquery 函数以实现您要查找的内容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-08
        • 2022-01-07
        • 2021-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-24
        相关资源
        最近更新 更多