我有一个锚点,在点击它时会触发一些事件,并添加一个新类并删除旧类,但是当我再次使用新类点击它时,原始事件再次被触发(就像这个类不是完全删除)。我尝试了.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');
});
});
答案 0 :(得分:1)
该行在执行时对所有具有该类的元素进行回调,即使它们稍后更改了类:
$('.no-cuenta').click(function(e) {
使用
$(document).on('click', '.no-cuenta',function(e) {
答案 1 :(得分: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');
});
});