Blair,
This is a great idea, thanks.

So when you say stop being lazy, am I to take it that there is not a webpage
with examples? :)

On 8/13/07, Blair Mitchelmore <[EMAIL PROTECTED]> wrote:
>
>
> So I actually wrote this plugin almost six months ago, but a few weeks
> ago I fleshed it out for use at work. The main external change was a
> change in the order of the arguments to simplify the code. And the
> main internal change was moving the structure of the timer tracking
> code to more closely mimic jQuery's internal event module. There
> wasn't anything wrong with the way it was written before, but this
> way, the code will appear more friendly for people trying to hack it
> in the future who are already familiar with hacking jQuery.
>
> Anyways, the main point of this code is concise definitions of
> interval-ed events. For a practical example:
>
> $("input").keypress(function() {
> $(this).stop("autocomplete").once(250,"autocomplete",function() {
> // provide a list of values to autocomplete with
> });
> });
>
> For another practical, though slightly more trivial, example:
>
> $('p.clock').every(1000, function() {
> this.innerHTML = // The time right.... now.
> });
>
> The example will "do something" after someone has typed something but
> only if no keys have been pressed for 250 milliseconds. This allows
> for dynamic type searching without complicated timing and clearing of
> timeouts in your code. The second example is a simple clock. The
> implementation may vary, but the principle is the same. One additional
> feature is the concept of labels. Labels allow you to define certain
> events to be in a certain namespace which can be more finely
> controlled. In this way, the above autocomplete example could operate
> on the same element while another timer sequence is occuring and
> because they have different labels, they could be stopped and
> controlled independent of each other without any complicated global
> variable nonsense.
>
> The level of control of stopping events employs labels. Calling $
> (this).stop() cancels any and all interval and timeout events attached
> to that element. $(this).stop('label') will stop any and all events
> with the label 'label' and $(this).stop('label',fn) will only stop a
> certain event if it is of that label name and calls the provided
> function. This allows for both broad and fine-grained event control.
>
> So, as per usual, I've left the documentation fairly sparse and this
> post will probably have to suffice until I stop being lazy.
>
> The functions I've added to jQuery are once, every, and stop.
>
> once takes three arguments: timeout, label, and function. label is
> optional and will become a string representation of the timeout if not
> specified. It will be called once in timeout milliseconds.
>
> every takes four arguments: timeout, label, function, and times. label
> is again options and defaults to the timeout value. times is also
> optional and becomes unbounded if unspecified. times is used to limit
> the number of times an event occurs.
>
> stop takes two arguments: label, and function. Both are optional and
> if neither is provided, all events on that DOM element are stopped. If
> the label is provided without a function all events with that label
> are stopped. Conversely, if a function is provided but no label, all
> the events calling that function, regardless of label, are stopped.
> Finally, if both are provided, they are both used to filter down to
> stop that event.
>
> The few times I've used these methods, my timer based methods have
> become invariably more readable and more compact. Enjoy, if you must.
>
> -blair
>
>


-- 
Benjamin Sterling
http://www.KenzoMedia.com
http://www.KenzoHosting.com

Reply via email to