Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana atrybutu stylu dla elementów (również tych dynamicznie tworzonych)
radziopoke
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://api.jquery.com/live/
W pierwszym szarym paragrafie opis w zależności od wersji jQuery.


--------------------
Go to the top of the page
+Quote Post
radziopoke
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
johny_s
post
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


a ten skrypt dodajacy te atrybuty jak masz wywoływany?
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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. });


Ten post edytował trueblue 7.05.2014, 17:53:23


--------------------
Go to the top of the page
+Quote Post
radziopoke
post
Post #6





Grupa: Zarejestrowani
Postów: 125
Pomógł: 14
Dołączył: 2.06.2010

Ostrzeżenie: (0%)
-----


  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ąć...

Ten post edytował radziopoke 7.05.2014, 17:55:40
Go to the top of the page
+Quote Post
johny_s
post
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


musiał byś wywoływać tą swoją funkcję initialize za każdym razem gdy dodajesz element
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jeżeli masz jakiś kontener do którego to pakujesz to dajesz dla niego akcje
Kod
.on('change', function() {});
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #9





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


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).

Ten post edytował PrinceOfPersia 7.05.2014, 20:24:39


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:37