2016-10-22 81 views
0

我试图给按钮一个新的内容,如果它被点击。我还添加了新的类。这项工作的精细完美的第一次点击,但由于某些原因的innerHTML ins't点击第二时间之后改变.. HTML:jQuery按钮更改不起作用

<button class="btn btn-warning btn-invisible"><i class="fa fa-eye-slash"></i></button> 

的jQuery:

$('.btn-invisible').click(function() { 
    $(this).removeClass('btn-invisible'); 
    $(this).addClass('btn-visible'); 
    $(this).html('<i class="fa fa-eye"></i>'); 
});    

$('.btn-visible').click(function() { 
    $(this).removeClass('btn-visible'); 
    $(this).addClass('btn-invisible'); 
    $(this).html('<i class="fa fa-eye-slash"></i>'); 
}); 

我得到这个小提琴准备好了:https://jsfiddle.net/dthee9w6/7/

如果有人可以帮忙,会很乐意。

+0

你想让它们切换吗? – Li357

+0

你的小提琴工作正常...检查元素并单击按钮。 HTML会根据您的预期进行更改。 – Santi

+0

尝试 '$(这).empty();' '$(这).append( '');' – victor175

回答

1

你应该“上”而不是使用“点击”,这样就可以动态地添加元素发挥。

$('body').on('click','.btn-invisible',function() { 

    $(this).removeClass('btn-invisible'); 

    $(this).addClass('btn-visible'); 
    $(this).html('<i class="fa fa-eye"></i>'); 
});    

$('body').on('click','.btn-visible',function() { 


    $(this).removeClass('btn-visible'); 

    $(this).addClass('btn-invisible'); 
    $(this).html('<i class="fa fa-eye-slash"></i>'); 
}); 

希望它有帮助。

+0

工作完美,很感谢 –

+0

快乐全部我的,先生:) –

0

总结你的代码$(函数(){}),这是$(文件)。就绪(函数(){} );,除了这每一件事情是罚款

有没有必要每次点击时更新html,你需要做的就是添加和删除必要的类。

对于第一个点击,你要删除隐形类和什么如果点击下一次,它会尝试再次删除隐形类,这是不存在的,在这里抛出一个错误,你应该使用toggleClass

$(function() { 
    $('.btn-invisible').click(function() { 

    $(this).toggleClass('btn-invisible'); 

    if (!$(this).hasClass('btn-visible')) { 

     $(this).addClass('btn-visible'); 
     $(this).find('.fa').removeClass('fa-eye-slash').addClass('fa-eye'); 
    } 
    }); 

    $('.btn-visible').click(function() { 

    $(this).toggleClass('btn-visible'); 

    if (!$(this).hasClass('btn-invisible')) { 

     $(this).addClass('btn-invisible'); 
     $(this).find('.fa').removeClass('fa-eye').addClass('fa-eye-slash'); 
    } 
    }); 
}); 

希望它可以帮助

+0

我忘了我想问什么。我更新了这个问题。 –

+0

修改代码..check是你在找什么 – Geeky