[jQuery] spritemenu customise

[jQuery] spritemenu customise


hello everyone,
i found quite interesting the spritemenu (http://
www.distinctcorp.com.au/jquery/spritemenu.html) idea and used it on my
website. It works quite fine, but i'd like to ad some functionality:
when the user click on a menu element, i want it to remain selected
(in hover state completed). So, here's the function:
<code>
(function($){
    $.fn.spritemenu = function(settings) {
        var settings = $.extend({}, $.fn.spritemenu.defaults, settings);
        return this.each(function() {
            var aniParamsOrig = {};
            var aniParamsBack = {};
            $(this).children(settings.buttonselector).each(function(index) {
                var $mainlink = $(this).children('a');
                $mainlink.parent().children('ul').css('opacity',0).hide();
                $mainlink
                    .css('display','block')
                    .css('position','relative')
                    .css('width',settings.buttonwidth)
                    .css('height',settings.buttonheight)
                    .css('background-image','url('+settings.grid+')')
                    .css('background-repeat','no-repeat')
                    .css('background-position',((0-index) * settings.buttonwidth)+'px
0px')
                    .css('z-index',settings.zindex)
                    .append('<span></span>').children('span')
                    .css('display','block')
                    .css('position','absolute')
                    .css('top',0)
                    .css('left',0)
                    .css('width',settings.buttonwidth)
                    .css('height',settings.buttonheight)
                    .css('background-image','url('+settings.grid+')')
                    .css('background-repeat','no-repeat')
                    .css('background-position',((0-index) * settings.buttonwidth)+'px
' + (-1*settings.buttonheight) + 'px')
                    .css('z-index',(settings.zindex+1));
                aniParamsOrig[settings.animate] = $mainlink.children('span').css
(settings.animate);
                aniParamsBack[settings.animate] = 0;
                $mainlink.children('span').css(settings.animate,0).hide();
            }).hover(function () {
                $(this).children('a').children('span').stop().show().animate
(aniParamsOrig, {queue: true, duration: settings.speed, easing:
settings.easing, complete: function() {
                    $(this).parent().parent().children('ul').stop().show().animate
({opacity: 1}, {queue: true, duration: 'slow'});
                }});
                },
                function () {
                    $(this).children('a').children('span').stop().animate
(aniParamsBack, {queue: true, duration: settings.speed, easing:
settings.easing, complete: function() {
                    $(this).hide().parent().parent().children('ul').stop().animate
({opacity: 0}, {queue: true, duration: 'slow'}).hide();
                }});
                }
            ).click(function(){
                /*alert("pop");*/
                $(this).parent().children('li').children('a').children('span').stop
().animate(aniParamsBack, {queue: true, duration: settings.speed,
easing: settings.easing});
                $(this).children('a').children('span').stop().show().animate
(aniParamsOrig, {queue: true, duration: settings.speed, easing:
settings.easing});
            });
        });
    }
    $.fn.spritemenu.defaults = {
        grid: 'menugrid.png',
        buttonwidth: 100,
        buttonheight: 100,
        buttonselector: 'li',
        zindex: 10,
        speed: 'slow',
        easing: 'swing',
        animate: 'opacity'
    };
    function abort() {
        arguments[0] = 'spritemenu: ' + arguments[0];
        throw format.apply(null, arguments);
    }
    function format(str) {
        for (var i = 1; i < arguments.length; i++)
            str = str.replace(new RegExp('\\{' + (i-1) + '}', 'g'), arguments
[i]);
        return str;
    }
})(jQuery);</code>
My add is relative to the .click section i report here:
<code>
.click(function(){
                /*alert("pop");*/
                $(this).parent().children('li').children('a').children('span').stop
().animate(aniParamsBack, {queue: true, duration: settings.speed,
easing: settings.easing});
                $(this).children('a').children('span').stop().show().animate
(aniParamsOrig, {queue: true, duration: settings.speed, easing:
settings.easing});
            });
</code>
and i get a weird behavior: when i use the alert, it works exactly as
i'd like it to: the animation completes fine and the element remains
in hover state. When i remove the alert, nothing happens and when the
mouse leaves the item after the click, it comes back to the original
state.
can anyone help me, please?
thanks a lot,
joey