Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana atrybutu stylu dla elementów (również tych dynamicznie tworzonych)
Forum PHP.pl > Forum > Po stronie przeglądarki
radziopoke
Tworząc stronę napotkałem pewien problem.
Mam elementy które posiadają jakąś klase np:
  1. <div class="klasa"></div>

w javascripcie mam skrypt, który wszystkim elementom $('.klasa') (korzystam z dobroci JQuery smile.gif ) dodaje nowe atrybuty za pomocą funkcji css ($('.klasa').css({jakieś atrybuty}) ) . Dzieje się to tylko raz. Kłopot w tym, że nowo utworzone obiekty, tworzone po wykonaniu poprzedniego skryptu nie otrzymują tych atrybutów.
czy jest jakaś możliwość za pomocą javascript dodania stylu css który będzie również dodawany do nowo tworzonych obiektów? (oczywiście bez wykonywania ponownie tego samego skryptu)
trueblue
http://api.jquery.com/live/
W pierwszym szarym paragrafie opis w zależności od wersji jQuery.
radziopoke
znam tą funkcję lecz nie jest ona mi pomocna gdyż .live (a raczej .on w wersji 1.11) dodaje dopiero gdy nastąpi pewne zdarzenie, a ja żadnego zdarzenia nie wykonuję. nowe elementy dodaję za pomocą append:
  1. $('#div').append('<div class="klasa"></div>');

Mogę dodać do tworzonego obiektu atrybut style i w nim dopisać do co potrzebuję (aktualnie tak mam), ale skoro wszystkie elementy .klasa mają mieć dokładnie tą samą właściwość to myślałem, że da radę wpisać tylko by klasa sama do dodawała (nie w arkuszu stylu gdyż javascript generuje wcześniej co ma być dodane). Aktualna metoda trochę rozszerza trochę kod html-a. Bo jest dopisywana dość duża dawka nowych elementów .klasa
johny_s
a ten skrypt dodajacy te atrybuty jak masz wywoływany?
trueblue
Wrzuć to tam gdzie potrzebujesz nadawać nowe style.
  1. $('div.klasa').each(function(){
  2. if($(this).data('dodane')!==true){
  3. $(this).css({...}).data('dodane',true);
  4. }
  5. });
radziopoke
  1. image = 'obrazek.png'
  2. function initialize(){
  3. ...//tutaj jest jeszcze trochę niezwiązanych z tym tematem danych
  4. $('.klasa').css('backgroundImage', 'url("'+image+'")')
  5. }
  6. initialize();
  7. ...//kolejne elementy skryptu i gdzieś dalej dopiero:
  8. $('#div').append('<div class="klasa"></div>');


wartość zmiennej image jest generowana jeszcze wcześniej, ale tutaj dodałem ją tylko tak by było wiadomo, że jest to zmienna smile.gif

Po tych odpowiedziach wnioskuję że nie ma możliwości zmienienia stylu dla danej klasy. i trzeba dodawać style każdemu nowemu elementowi. A chciałem tego uniknąć...
johny_s
musiał byś wywoływać tą swoją funkcję initialize za każdym razem gdy dodajesz element
Pyton_000
Jeżeli masz jakiś kontener do którego to pakujesz to dajesz dla niego akcje
Kod
.on('change', function() {});
PrinceOfPersia
a nie możesz dodać kodu CSS w pliku HTML?
  1. .klasa {
  2. background-image:url('obrazek.png');
  3. }


ewentualnie tworzyć dynamicznie ten CSS, a potem wrzucać do dokumentu w tagu < style > ......</ style >, tak jak tutaj:
http://jsfiddle.net/9MAq6/1/

nie jest to może supereleganckie, ale działa (chociaż nie wiem co chcesz zrobić dokładnie).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.