2010-02-07 5 views
1

Je jQuery ce script:fonction de rappel JavaScript

$(content).find('data').each(function(){ 

    // parsing some data 

    $(this).find('something').each(function(){ 

    $(this).find('something new').each(function(){ 

     // etc. 

    }}; 

    }); 

}); 

... et je veux appeler la fonction XYZ() après ce script est terminé.

Ce ne fonctionne pas (il XYZ appel de fonction() trop tôt):

$(content).find('data').each(function(){ 

    // parsing some data 



}, XYZ()); 

Existe-t-il des solutions? Je vous remercie. $ .each n'est pas asynchrone, donc vous n'avez pas besoin d'un callback en soi.

Répondre

7

$. Cela fonctionne:

$(content).find('data').each(function(){ 
    // parsing some data 
    $(this).find('something').each(function(){ 

    $(this).find('something new').each(function(){ 

    // etc. 
    }); 
    }}; 
}); 

XYZ(); 
0

au cas où vous avez un processus asynchrone, vous devez appeler "XYZ()" dans "//etc."

var xData $(content).find('data'), 
    lenData = $(xData).length; 

if (lenData==0){ 
    XYZ(); 
} 
else{ 
    $.each(xdata, function(index, value){ 
    // parsing some data 

    var xsomething = $(this).find('something') 
     lenxsomething = $(xsomething).length; 

    if ((lenxsomething==0) && (lenData==(index+1))){ 
     XYZ(); 
    } 
    else{ 
     $.each(xsometing, function(index2, value2){ 

     var xsomethingNew $(this).find('something new') 
      lenxsomethingNew = $(xsomething).length; 

     if ((lenxsomethingNew==0) && (lenxsomething==(index2+1))){ 
      XYZ(); 
     } 
     else{ 
     $.each(xsomethingNew, function(index3, value3){ 
       //etc .. 
       //then asynchronous process 
       if (lenxsomethingNew==(index3+1)){ 
       XYZ(); 
       } 
      }); 
     } 

     }); 
    } 
    }); 
}