David,

Thank you so much for the suggestion. As you expected, it worked
perfectly for me. I ended up with the following:

function addHoverHide(linkClass, layerId) {
    var t;
    $("a." + linkClass).hover(function() {
        clearTimeout(t);
        // custom function which creates drop shadows around layerId
        createShadowbox(layerId,this);
    }, function() {
        t = setTimeout(function() {$("#" + layerId).hide()}, 1500);
    });

    // if user hovers over the floating layer
    $("#"+layerId).hover(function() {
        clearTimeout(t);
    }, function() {
        t = setTimeout(function() {$("#" + layerId).hide()}, 1500);
    });
}

Thanks again!
-victor

On Jan 23, 7:09 pm, David Serduke <[EMAIL PROTECTED]> wrote:
> How about using closure like this?
>
> function addHoverHide(linkClass, layerId) {
>   var t;
>   $("." + linkClass).hover(function() {
>     clearTimeout(t)
>     $("#" + layerId).show();
>   }, function() {
>     t = setTimeout(function() {$("#" + layerId).hide()}, 2000);
>   });}
>
> $(document).ready(function () {
>   addHoverHide("some_link", "this_layer");
>   addHoverHide("some_other_link", "this_other_layer");
>
> });
>
> Untested but the idea should work.  Good luck.
>
> David
>
> On Jan 23, 6:42 pm, gr00vy0ne <[EMAIL PROTECTED]> wrote:
>
> > This is more of a general javascript question but when using
> > setTimeout and clearTimeout, does the "timer" variable have to exist
> > outside the function globally?
>
> > For instance, I understand the following:
>
> > var t;
>
> > $(".some_link").hover(function() {
> >     clearTimeout(t)
> >     $("#this_layer").show();}, function() {
>
> >     t = setTimeout(function() {$("#this_layer").hide()}, 2000);
>
> > }
>
> > Is there a way to create the timer within the jquery hover so that
> > it's self-contained? Ideally, I'd like the timer to be dynamically
> > created as necessary so if I add other hovers then I don't need to
> > keep adding new variables to store the timer.
>
> > Would I have to create an array that stores each unique timer? Is that
> > the way to go?

Reply via email to