2011-07-01 11 views
7

Tengo que comprobar cuando un elemento está vivo, que estoy haciendo:¿Alternativa al plugin de jQuery livequery?

$('#obj').livequery(function() { ... }); 

¿Cómo puedo hacerlo con el método directo o de otra manera?

+0

¿Es algo que está generando dinámicamente o se trata presente en su página cuando se carga (más de una vez?)? (es decir, ¿puedes simplemente usar '$ (document) .ready (...);'?) – Rup

+0

generaré este '#obj' con javascript, entonces es dinámicamente – Codnickers453

+0

idk ¿por qué, pero cuando hago fadeIn() en algún elemento , el plugin livequery no funcionará porque quiero encontrar una nueva alternativa. – Codnickers453

Respuesta

1

Si es su código que se agregó el elemento al DOM, a continuación, ejecutar el código en él cuando lo cree:

$('body').append('<div id="obj">some new object</div>'); 

var obj = $('#obj'); 

obj.runSomeCode(); 

... o incluso se puede hacer antes de que se anexa:

var obj = $('<div id="obj">some new object</div>'); 

obj.runSomeCode(); 

obj.appendTo('body'); 
+0

solo quiero una alternativa al plugin livequery ... – Codnickers453

+0

Bueno, como alternativa al uso de livequery, puede ejecutar la función usted mismo cuando se desvanece el elemento en la página. – Rup

+1

@Rapososoo: esta es una alternativa al uso de livequery. Si no desea que livequery lo haga de forma automática, debe codificarlo manualmente, lo cual es una práctica mejor de todos modos IMO. – user113716

2

Ésta es una vieja pregunta, pero para que conste, aquí mis 5 centavos:


una alternativa a.210 es el uso de un enfoque Publish/Subscribe con, por ejemplo, esta implementación jQuery Tiny Pub/Sub: A really, really, REALLY tiny pub/sub implementation for jQuery.

lo uso, por ejemplo, de esta manera:

// inform of DOM change (mostly through AJAX) 
$.publish("/table/loaded"); 

// re-execute plugin 
$.subscribe("/table/loaded", function(e, data) { 
    $("#my_id input[name='date']").datepicker(); 
}); 

+ Info: Understanding the Publish/Subscribe Pattern for Greater JavaScript Scalability

1

Como alternativa a la livequery plug-in puede ver el plugin $ .whenLive jQuery:

$ .whenLive le permite rastrear la inserción del árbol DOM de uno o más elementos.

http://bitcubby.com/tracking-the-insertion-of-javascript-components-into-the-dom/

Aquí es un ejemplo de esa página:

var widget = $("<div>I am a nobody. Nobody is perfect. Therefore, I am perfect.</div>"); 
$(widget).onLive(function() { 
    // Awesomesauce. 
    var height = $(this).height(); 
    var width = $(this).width(); 
}); 
$("body").append(widget); 
0

Es una vieja pregunta, pero estoy asombrado no hay una respuesta, ya que es simple. Debe usar on() y adjuntar el evento a un padre o cuerpo. Ej:

$('#obj').livequery('click', function() { ... }); 
$('#obj').livequery(function() { ... }); 

convierten

$('body').on('click', '#obj', function() { ... }); 
$('body').on('DOMNodeInserted','#obj', function() { ... }); 

nota que DOMNodeInserted es IE9 +