0

我有一个锚点,在单击它时会触发一些事件,并添加一个新类并删除旧类,但是当我用新类再次单击它时,原始事件会再次触发(就像根本没有删除该类一样)。我尝试了该.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');
    });
  });
4

2 回答 2

1

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

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

采用

$(document).on('click', '.no-cuenta',function(e) {
于 2012-09-23T07:32:08.690 回答
1

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

请注意,以下代码使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');
    });
});
于 2012-09-23T07:32:21.073 回答