Reputation: 11107
I want the user to click on a button and then have some html pop into an element. I did so and it works but it only works once. If they click the button again, nothing happens. I thought using empty() would fix the problem but it doesn't. What's wrong with my code.
<script type="text/javascript" >
$(document).ready( function() {
$('#button').on('click', function () {
$('#ul').html('<li>testing testing</li>').hide(1000, function() {
$(this).empty();
});
});
});
</script>
<input type="button" value="click me" id="button" />
<ul id="ul">
</ul>
Upvotes: 1
Views: 1423
Reputation: 2452
$("#button").click(function(){
$("#ul").append("testing testing");
});
Upvotes: 2
Reputation: 1755
When you do a .hide() you set the CSS selector "display" = "NONE" You need to change it to something like this:
$('#ul').html('<li>testing testing</li>').hide(1000, function() {
$(this).empty();
$(this).show();
});
Upvotes: 1
Reputation: 207511
jQuery('<li>testing testing</li>').appendTo('#ul').hide(1000, function() {
$(this).remove();
});
Upvotes: 1
Reputation: 4066
as you want to pop html each time you click on button you should use append
$('#ul').append('<li>testing testing</li>');
see append
Upvotes: 2
Reputation: 108500
The element is hidden the second time you click the button. You can do:
$('#ul').show().html('...
Upvotes: 3