2010-10-01 19 views
23

Chcę dodać klasę do dowolnego elementu DOM, który znajduje się na stronie teraz lub w przyszłości, która ma określoną klasę i spełnia pewne kryteriajquery wydarzenie na żywo dla dodawanych elementów DOM

więc jakiegoś pseudo kod

$('.location').live('load',function(){ 
    if($(this).find('input:first').val().substr(0,1) == "!"){ $(this).addClass('hidden')} 
}); 

oczywiście tego nie robi nic

EDIT UWAGA

to nie działa albo

$('.location').live('load',function(){ 
    alert('adding location'); 
}); 
+0

Zobacz moją odpowiedź na temat używania livequery() zamiast live(). Jest to wtyczka, na której oparta jest live(). – Gregg

+0

Jaką wersję jQuery używasz? –

+0

Używam 1.4.2 – mcgrailm

Odpowiedz

24

Funkcja live() jQuery jest tylko podzbiorem wtyczki na żywo, która jest znacznie bogatsza. Jeśli korzystasz z tekstu źródłowego, możesz zrobić coś takiego, jak ..

$('.location').livequery(function() { 
    // perform selector on $(this) to apply class 
}); 

To obejmie istniejące elementy oraz wszelkie przyszłe elementy dodane do DOM.

+0

, więc jest to wtyczka, która musi być dołączona? – mcgrailm

+0

Tak. http://docs.jquery.com/Plugins/livequery – Gregg

+1

+1 Nie widziałem tej odpowiedzi, gdy odpowiadałem. Usunięto moje. : o) Chociaż nie sądzę, bym powiedział, że jeden jest podzbiorem drugiego. Sposób, w jaki działają, jest zupełnie inny. – user113716

0

Nie możesz tego zrobić.

Musisz zrobić:

$('.location').filter(function() { 
    return ($(this).find('input:first').val().substr(0, 1) == "!"); 
}).addClass('hidden'); 

aby zastosować go do wszystkich aktualnie elementów na stronie, a następnie ręcznie dodać klasę „ukryte” do przyszłych elementów dodawanych do DOM.

+0

mając nadzieję, że znajdę coś, co pokryje je wszystkie, ale może to być jedyny sposób, aby – mcgrailm

+0

Jeśli zrobisz to poprawnie, nie będzie musiał być ręcznie. – Gregg

+0

@Gregg: Jeśli znasz poprawne rozwiązanie do automatycznego dodawania klas, aby wybrać elementy dodane do DOM na późniejszym etapie, udostępnij je. – Matt

0

Kod .subtr(0,1) = "!" prawdopodobnie nie robi, co chcesz.

+0

Tak, sprawdza, czy pierwszy znak w łańcuchu to "!" Nie mogę wydarzenie ostrzec mnie – mcgrailm

+0

Jest tam pojedynczy znak '='. – yfeldblum

+0

Tak, przepraszam, mój zły, miałem literówkę, jesteś poprawny, ale to nie jest odpowiedź na problem dzięki za pomoc – mcgrailm

Powiązane problemy