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>
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>
Share
Improve this question
asked Oct 5, 2012 at 18:16
thank_youthank_you
11.1k19 gold badges106 silver badges194 bronze badges
5 Answers
Reset to default 3The element is hidden the second time you click the button. You can do:
$('#ul').show().html('...
http://jsfiddle/KXkgZ/
as you want to pop html each time you click on button you should use append
$('#ul').append('<li>testing testing</li>');
see append
$("#button").click(function(){
$("#ul").append("testing testing");
});
jQuery('<li>testing testing</li>').appendTo('#ul').hide(1000, function() {
$(this).remove();
});
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();
});