Agregar devolución de llamada en jQuery

tengo una solución:

var addContent = {
...
append: function (obj, data, callBack) {
        "use strict";
        obj.append(data);
        callBack();
    }
}

La función "addContent.append()" agrega su valor de parámetro de datos a su obj y llama a su callBack(), ¡también está funcionando! Pero el "parámetro obj" no ha estado en DOM, entonces ese elemento que lo encontró en "parámetro de datos" no está disponible.

Por ejemplo:

var to = jQuery('<div>');
addContent.append(to, '<div id="element1"></div>', function () {
    alert(jQuery('#element1').length);
});

Este código dice "0".

¿Tienes alguna solución?

¡Gracias!

preguntado el 22 de mayo de 12 a las 12:05

2 Respuestas

Si he entendido bien tu pregunta, el problema es que el elemento al que hace referencia to no está en el DOM, por lo que cuando intenta seleccionar elementos que se le han agregado, no se encuentran (ya que su padre no está en el DOM).

Creo que lo que puede querer es el argumento de contexto:

alert(jQuery('#element1', to).length);

Esto seleccionará los elementos que coincidan #element1 que son descendientes de to.

contestado el 22 de mayo de 12 a las 13:05

Utilice la función de documento listo

jQuery(document).ready(function(){
    var addContent = {
    append: function (obj, data, callBack) {
            "use strict";
            obj.append(data);
            callBack();
        }
    }
    var to = jQuery('div');
    addContent.append(to, '<div id="element1">545</div>', function () {
        alert(jQuery('#element1').length);
    });
});

contestado el 22 de mayo de 12 a las 13:05

Documento listo no es una solución porque es contenido "dynamic ajax". - Gábor Varga

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.