I agree that this is a common use case, and also that it would be better implemented as an optional parameter to ajax rather than a wholly separate method.
I find I also use similar code within animations, so perhaps the code could be implemented in such a way as to also be exposed as a utility function. Perhaps: $.delay(function, delay) - returns a function handler which can be called many times, but the registered function will only fire once, [delay] milliseconds after the last time it was called. The innards of the function would be mostly as Miloš has above. A potentially useful corollary might be: $.throttle(function, delay) - returns a function handler which could be called as many times as desired, but the registered function would only fire every [delay] millis at most. Names are just off the top of my head, of course. oliver On Mar 27, 3:27 pm, Daniel Friesen <nadir.seen.f...@gmail.com> wrote: > Rather than an entire other function, what about just a {delay: ms} to .ajax > > ~Daniel Friesen (Dantman, Nadir-Seen-Fire) > > > > Miloš Rašić wrote: > > Here's a suggestion for a feature that I think would be useful to AJAX > > developers. Sometimes, we need an AJAX feature that could allow a user > > to cause a large number of consequent AJAX requests, for example in > > auto-complete for searches (like Google Suggest) or filter forms that > > submit whenever something is changed in them. In a case like this, > > especially when the user has a slow internet connection, we have no > > way of knowing if the AJAX responses will arrive in the same order as > > the requests were sent. A solution to this is to wait for some time to > > make sure that the user has stopped manipulating the controls that > > cause AJAX requests before sending a request. At the moment, I do it > > like this: > > > function submit_filter() { > > $('#item_list').html('loading...'); > > $.post('some url',$('#filter').serialize(),function(data) { > > $('#item_list').html(data); > > }); > > return false; > > } > > > $('.ajax_control').change(function() { > > clearTimeout(ajaxTimeout); > > ajaxTimeout = setTimeout(submit_filter,2000); > > }); > > > Basically, whenever a control is changed a timeout for ajax request is > > reset to 2 seconds. A request is sent only when a user changes > > something an hasn't made new changes last 2 seconds. > > > Since this is a frequent use case, it would be great if there would be > > a $.post_delayed() function which would have additional 2 parameters: > > an id, which would be used to identify related controls, and a time > > interval to wait before submitting the request. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---