2010-02-07 145 views
1

我有這樣的jQuery腳本:JavaScript回調函數

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

    // parsing some data 

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

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

     // etc. 

    }}; 

    }); 

}); 

...我想調用函數XYZ()這個腳本結束後。

這不是工作(它會調用函數XYZ()太早):

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

    // parsing some data 



}, XYZ()); 

有什麼辦法呢?謝謝。

回答

7

$ .each不是異步的,所以你不需要回調本身。這將工作:

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

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

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

XYZ(); 
0

如果你有任何異步過程,你應該在「/ /等」中調用「XYZ()」。

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(); 
       } 
      }); 
     } 

     }); 
    } 
    }); 
}