esther
esther

Reputation: 55

setTimeout issue, there is no time out

sorry, but this isn't easy for me....! I want a div to show after several seconds,after a click on a button. It is showing, but right when you click, there is no delay. What am i doing wrong here?

$('div.skill').hide();
$('.btn_2').click(function(e){              
        showSkills ();
      });
function showSkills(){
    alert("Hello")
};
setTimeout ( "showSkills()", 3000 );

Tnx

Upvotes: 3

Views: 113

Answers (5)

James Hill
James Hill

Reputation: 61793

You're close.

  1. The setTimeout call should be inside of your click handler, not below it.
  2. There is no need to pass the function name as a string.

This is the proper way to achieve what you're after:

$('div.skill').hide();
$('.btn_2').click(function (e) {
    setTimeout(showSkills, 3000);
});

function showSkills() {
    alert("Hello")
};

Upvotes: 3

Dutts
Dutts

Reputation: 6191

You are calling showSkills in your button click handler, move your setTimeout line into your click handler instead

$('div.skill').hide();
$('.btn_2').click(function(e){              
        setTimeout ( showSkills, 3000 );
      });
function showSkills(){
    alert("Hello")
};

Upvotes: 2

arulmr
arulmr

Reputation: 8836

Try this:

$('div.skill').hide();
$('.btn_2').click(function(e){              
    setTimeout (showSkills, 3000 );
});
function showSkills(){
    alert("Hello")
};

Upvotes: 0

samazi
samazi

Reputation: 1171

$('div.skill').hide();

$('.btn_2').click(function(e){              
        setTimeout(showSkills, 3000);
});

function showSkills(){
    alert("Hello")
};

Upvotes: 0

Francois Borgies
Francois Borgies

Reputation: 2408

try :

setTimeout (function(){ "showSkills()"}, 3000 );

Upvotes: 0

Related Questions