2011-07-01 10 views
7

muszę sprawdzić kiedy element jest żywy, robię:Alternatywa dla wtyczki na żywo jQuery?

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

Jak mogę to zrobić metodą żywo lub inny sposób?

+0

Czy jest coś jesteś generowania dynamicznie lub jest obecna na swojej stronie, gdy jest załadowany (więcej niż raz?)? (Czy możesz po prostu użyć '$ (document) .ready (...);'?) – Rup

+0

wygeneruję to '#obj' z javascript, wtedy dynamicznie jest – Codnickers453

+0

idk dlaczego, ale kiedy robię fadeIn() w jakimś elemencie , wtyczka na żywo nie będzie działać, ponieważ chcę znaleźć nową alternatywę. – Codnickers453

Odpowiedz

1

Jeśli jest to kod, który jest dodanie elementu do DOM, a następnie uruchomić kod na nim podczas jego tworzenia:

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

var obj = $('#obj'); 

obj.runSomeCode(); 

... czy można jeszcze zrobić, zanim zostanie dołączone:

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

obj.runSomeCode(); 

obj.appendTo('body'); 
+0

Chcę tylko alternatywy dla livequery z wtyczkami ... – Codnickers453

+0

Cóż, jako alternatywa dla używania livequery, możesz uruchomić tę funkcję, gdy znikniesz z elementu na stronie. – Rup

+1

@Rapososoo: Jest to alternatywa dla używania tekstu na żywo. Jeśli nie chcesz, aby livequery zrobiło to automatycznie, musisz ręcznie zakodować kod, co i tak jest lepszą praktyką IMO. – user113716

2

to stara sprawa, ale dla porządku, tutaj moje 5 centów:


alternatywą dla livequery jest zastosowanie podejścia Publish/Subscribe z na przykład ta implementacja jQuery Tiny Pub/Sub: A really, really, REALLY tiny pub/sub implementation for jQuery.

Używam go na przykład w ten sposób:

// 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

Jako alternatywę do livequery wtyczkę możesz obejrzeć wtyczkę jQuery $ .whenLive:

$ .whenLive pozwala śledzić wstawienie drzewa DOM jednego lub więcej elementów.

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

Oto przykład z tej strony:

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

To stara sprawa, ale jestem zdumiony nie ma odpowiedzi jak to proste. Musisz użyć on() i dołączyć wydarzenie do rodzica lub ciała. Ex:

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

stać

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

nuta że DOMNodeInserted jest IE9 +