jquery html callback

¿Hay una callback para la función html () o una forma de verificar que haya finalizado? Por ejemplo:

$("#some_div").html('something here'); if($("#some_div").html() == ''){ //do something here } 

Estoy configurando el html de un elemento de una publicación. A veces no se carga así que cuando no se carga me gustaría que haga algo, ¿es esto posible? La forma en que lo tengo ahora siempre hace lo demás porque no ha configurado el html para cuando comprueba que tiene html.

html() es una operación sincrónica. La actualización real del DOM depende de cuál sea tu contenido html. Si tiene o , llevará tiempo cargarlas. La siguiente instrucción que sigue al html() debería ver inmediatamente los nuevos contenidos html.

¿Querías decir load() lugar?

[Editar] Según tu comentario, es probable que tu $.ajax falle. No html() . Intente asociar un controlador de fallas a una llamada ajax y vuelva a intentar desde allí? Aunque, si el código del lado del servidor falla silenciosamente con un código 200, el evento de falla no se llama. En ese caso, puede validar el valor html antes de establecerlo en el elemento.

La respuesta de Chetan Sastry (la respuesta más alta ahora) no es 100% correcta.

 $('#some_div').html('
some content
'); // code 1 $('#new_div').click(function(){ }); //code 2

No sé por qué, pero en algunos casos, el código 2 se ejecutará antes de que termine el código 1. Hay un corto tiempo de menos de 0 milisegundos entre el código 1 y el código 2. Deberían existir algunas órdenes de ejecución especiales en Javascript.

Tienes que usar el método de cballou (la respuesta de la planta = _ =!) Para resolver el problema. p.ej

 var sync = function(fn, millisec){ var m = millisec ? millisec : 0; //in face, 0 is enough return setTimeout(fn,m); }; $('#some_div').html('
some content
'); // code 1 var code2 = function(){ $('#new_div').click(function(){ }); // run code 2, here }; sync(code2);

La única forma que encontré con Live y Callback,

 $('p').live('click', function() { // delay dont work with html() // fcallback function $(this).parent('div').slideUp('slow', function() { // empty block $(this).html(''); if($(this).html()==''){ // function myFunction(); } }); }); 

Espero que alguien tenga una mejor solución que yo. Una solución rápida es usar setTimeout () para retrasar sus próximas llamadas, dando a su bloque HTML suficiente tiempo para cargar (ya que el tiempo de carga es tan minúsculo).

 $('#some_div').html('
some content
'); // set timeout for 250 milliseconds setTimeout(callbackFunction, 250); function callbackFunction() { // do some cool sh*t }

Tenga en cuenta, sin embargo, que si desea pasar cualquier variable a su función, podría hacer lo siguiente:

 $('#some_div').html('
some content
'); // set timeout for 250 milliseconds var myParam = 'value'; setTimeout(function() { callbackFunction(myParam); }, 250); function callbackFunction(myParam) { // do some cool sh*t alert(myParam); }