I ran into this same problem today and wrote up this quick plugin that accepts a boolean or function: $.fn.extend({ showIf: function(fn) { var result; switch (typeof fn) { case 'function': result = fn.call(this); break; default: result = fn; } if (result) { $(this.show()); } else { $(this.hide()); } return $(this); } });
Usage example: // Show all LI's based on value of condition var condition = true; $('ul.tabs li').showIf(condition); // Show all LI's that contain exactly 3 anchors $('ul.tabs li').showIf(function() { return ($(this).find('a').length == 3); }); I hope this helps :) -Hector On Tue, Nov 18, 2008 at 11:13 PM, Dylan Verheul <[EMAIL PROTECTED]>wrote: > > On Tue, Nov 18, 2008 at 19:58, Karl Swedberg <[EMAIL PROTECTED]> > wrote: > > On Nov 18, 2008, at 9:02 AM, Dylan Verheul wrote: > > Hmm, I actually checked the docs for that because that would make > > .toggle an unsuitable overloader. The docs said toggle doesn't take > > arguments: > > > > Hmmm, indeed. :) Not so much outdated as incomplete. I just went ahead > and > > added it to the docs: > > http://docs.jquery.com/Effects/toggle#speedcallback > > Good :-) Anyway, that means no simple overloading method is available. > Of course it's no problem to code it or even to write a plugin, but I > thought overloading an existing function would make for an interesting > and probably often-used functionality, which was the point of starting > this thread. >