(function($) { $.fn.jFancyMenu = function(o) { var noop = function() {}, $li = $("li", this), curr = $("li.current", this)[0], $back = $("li.background", this); o = $.extend({ fx: "easein", speed: 500, onclick: noop }, o || {}); $li.hoverIntent({ sensitivity: 2, interval: 50, over: function(){ move(this); }, out: noop }); $(this).hover(noop, function() { move(curr); }); $li.click(function(e) { setCurr(this); o.onclick.apply(this, [e, this]) }); setCurr(curr); function setCurr(el) { $back.css({ "visibility":"visible", "opacity": "1", "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" }); curr = el; }; function move(el) { $back.animate({width: el.offsetWidth, left: el.offsetLeft}, o.speed, o.fx); }; }; })(jQuery);