whoops, I didn't read your original message closely enough: of course
ajax calls are inherently non-blobking.  this should work with the
callback mechanism that ganeshji mentioned above.  it gets pretty
recursive if you have lots of effects you want to trigger
sequentially.

(this is untested code, but should at least get you going)

$("#bt1, #bt2, #bt3").click(function(event, callback) {
    var ajaxprops = {};
    // set up whatever ajax properties you need
    // then add a passed-in callback
    if (callback) {
        $.extend(ajaxprops, {complete: callback});
    }
    $.ajax(ajaxprops)
});

function sequential_ajax() {
    $("#bt1").trigger("click", function() {
        $("#bt2").trigger("click", function() {
            $("#bt3").click();
        });
    });
}

o

On Jul 24, 10:35 pm, oliver <[EMAIL PROTECTED]> wrote:
> I think it depends on what you are doing in those click functions.  If
> they inherently call timeout/interval code, then they are non-blocking
> by nature and you will need to edit them in able to be able to pass in
> a callback of some sort.  If the click handlers are already blocking,
> though, then you can just call them as you have above.  This code
> illustrates that: it adds a 1/2 second script to every paragraph in
> the page, then executes them.
>
> $("p").click(function() {
>     var timeout = new Date().valueOf() + 500;
>     console.log("click started at " + timeout);
>     while (timeout > new Date().valueOf()) {
>         // wait
>     }
>     console.log("click done at " + new Date().valueOf());
>
> }).click();
>
> If you run it, you will notice two things: 1) the scripts execute
> sequentially (and could have been put on separate lines as in your
> example), and 2) it is a blocking script, so you must wait until all
> are done before you see any output.  If you have a lot of paragraphs
> on you page, you will probably get an 'unresponsive script' error.
> This could be mitigated without sacrificing your original intent by
> triggering each click on a short timeout, but it gets complicated with
> many and/or variable items.
>
> $("p:eq(0)").click();
> window.setTimeout(function() {
>     $("p:eq(1)").click();
>     window.setTimeout(function() {
>         $("p:eq(2)").click();
>     }, 5);}, 5);
>
> // etc...
>
> o
>
> On Jul 24, 5:37 pm, tuliopaiva <[EMAIL PROTECTED]> wrote:
>
> > Hi!
>
> > I have 3 buttons (id's "bt1", "bt2" and "bt3"), and each one has a
> > onclick funcion that is a ajax function. I want to execute this code:
>
> > 1     $("#bt1").click()
> > 2     $("#bt2").click()
> > 3     $("#bt3").click()
>
> > but to execute the line 2, the line 1 must have finished the
> > execution, and the line 3 shoud be executed when the line 2 finished
> > (all funcions are ajax functions).
>
> > How can I do this???
>
> > Thanks.
>
> > []'s

Reply via email to