jQuery removeClass 实际上并没有删除类



我有一个锚点,它在单击时会触发一些事件,并添加一个新类并删除旧类,但是当我使用新类再次单击它时,原始事件再次触发(就像根本没有删除该类一样)。我尝试了.live()功能,但没有帮助(toggleclass()也不起作用)。

有谁知道这是怎么回事?

$('.no-cuenta').click(function(e) {
    e.preventDefault();
    $('.login-inputs').hide('drop', 1000, function(){
      $('.register-inputs').show('drop', 1000);
      $('.no-cuenta').empty().text('Ya tienes cuenta? Ingresa').addClass('si-cuenta').removeClass('no-cuenta');
    });
  });
  //Cargar la forma para loggearse
  $('.si-cuenta').live('click',function(d) {
    d.preventDefault();
    $('.register-inputs').hide('drop', 1000, function(){
      $('.login-inputs').show('drop', 1000);
      $('.si-cuenta').empty().text('No tienes cuenta? Registrate').addClass('no-cuenta').removeClass('si-cuenta');
    });
  });

您应该使用 .on() 方法将 click 事件处理程序绑定到委托。这可确保处理程序绑定到具有指定类的任何元素,即使它们是稍后创建的。

请注意,以下代码使body元素成为处理这些单击事件的委托,您应该使用最接近的公共父级作为这些元素的"管理器":

$("body").on('click', '.no-cuenta', function () {
    e.preventDefault();
    $('.login-inputs').hide('drop', 1000, function(){
        $('.register-inputs').show('drop', 1000);
        $('.no-cuenta')
            .empty()
            .text('Ya tienes cuenta? Ingresa')
            .addClass('si-cuenta')
            .removeClass('no-cuenta');
    });
});
$("body").on('click', '.si-cuenta', function () {
    d.preventDefault();
    $('.register-inputs').hide('drop', 1000, function(){
        $('.login-inputs').show('drop', 1000);
        $('.si-cuenta')
            .empty()
            .text('No tienes cuenta? Registrate')
            .addClass('no-cuenta')
            .removeClass('si-cuenta');
    });
});

此行在执行时注册所有具有该类的元素的回调,即使它们稍后更改类:

$('.no-cuenta').click(function(e) {

$(document).on('click', '.no-cuenta',function(e) {

相关内容

  • 没有找到相关文章

最新更新