2012-09-23 57 views
0

我有一個錨在點擊時觸發某些事件,並添加一個新類並刪除舊類,但是當我再次用新類單擊時,原始事件再次觸發(如果班級完全沒有被刪除)。我嘗試了.live()函數,但沒有幫助(toggleclass()也沒有工作)。jQuery removeClass實際上並沒有刪除類

有沒有人知道這是怎麼回事?

$('.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'); 
    }); 
    }); 

回答

1

您應該使用.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'); 
    }); 
}); 
+0

這並獲得成功,謝謝:) – Danny

+0

不客氣,很高興我能幫上忙 – Asciiom

1

該行註冊上有類在執行時的所有元素的回調,即使他們改變類更新:

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

使用

$(document).on('click', '.no-cuenta',function(e) { 
相關問題