Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Zmiana ID, class
deha21
post
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Potrzebuję zmienić id lub klasę dla jednego obiektu.
  1. <a href='#' class='zgas'><img src='img/lightoff.png' alt='Zgaś/Zaświeć światło'></a>

Chodzi o .zgas aby zmienił się na .zaswieć i potem na odwrót, po kliknięciu w .zaswiec żeby zmienił się na .zgas

Na razie mam taki kod:
[JAVASCRIPT] pobierz, plaintext
  1. $(".zgas").click(function(){$("#expose").expose({api: true}).load(); $(".zgas img").attr("src","img/lighton.png"); $(".zgas").addClass("zaswiec");});
  2. $(".zaswiec").click(function(){$("#expose").expose({api: true}).close(); $(".zaswiec img").attr("src","img/lightoff.png");});
[JAVASCRIPT] pobierz, plaintext


Tutaj dodatkowo zmiana obrazka i expose (obie działają tylko na włączeniu). Pomóżcie.


--------------------
Go to the top of the page
+Quote Post
mls
post
Post #2





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


[JAVASCRIPT] pobierz, plaintext
  1. $('.zgas').click(function () { $('#expose').expose({api: true}).load(); $(this).find('img').attr('src', 'img/lighton.png').end().removeClass('zgas').addClass('zaswiec'); });
[JAVASCRIPT] pobierz, plaintext


W takich sytuacjach brakuje w jQuery funkcjonalności zamiany jednej klasy na inną jednym poleceniem, co na szczęście można sobie łatwo dodać:
[JAVASCRIPT] pobierz, plaintext
  1. jQuery.fn.replaceClass = function(c1, c2)
  2. {
  3. return $(this).each(function () { return $(this).hasClass(c1) ? $(this).removeClass(c1).addClass(c2) : $(this); });
  4. };
[JAVASCRIPT] pobierz, plaintext


Wówczas zamiast (...).removeClass('zgas').addClass('zaswiec'); wystarczyłoby zapisać (...).replaceClass('zgas', 'zaswiec');.

Ten post edytował mls 16.02.2010, 21:57:49


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





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Ok dwa sposoby prawie działają winksmiley.jpg Zrobiłem to tak, że najpierw remove a potem add ale niestety coś się chrzni i zamiast robić klasę "zaswiec" wpisuje " zaswiec" ze spacją na początku, chociaż w kodzie jej nie ma. Co to moze byc?
[JAVASCRIPT] pobierz, plaintext
  1. $(".zgas").click(function(){$("#expose").expose({api: true}).load(); $(".zgas img").attr("src","img/lighton.png"); $(this).removeClass("zgas").addClass("zaswiec");});
[JAVASCRIPT] pobierz, plaintext


Poczytałem na stronce jQuery i ktoś dał pomysł żeby zrobić to za pomocą:
[JAVASCRIPT] pobierz, plaintext
  1. $(this).attr("class","zaswiec")
[JAVASCRIPT] pobierz, plaintext

I zamienia bezproblemowo z tym, że potem nie działa na tym funkacja kliknięcia na tą dodaną klasę (zaswiec):
[JAVASCRIPT] pobierz, plaintext
  1. $(".zaswiec").click(function(){$("#expose").expose({api: true}).close(); $(".zaswiec img").attr("src","img/lightoff.png");});
[JAVASCRIPT] pobierz, plaintext

:/


--------------------
Go to the top of the page
+Quote Post
Kyle
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 25.12.2008

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


Jeśli zmieniasz czemuś klasę to musisz ponownie podpiąć event .click() na tą klasę, którą dodajesz.
Go to the top of the page
+Quote Post
deha21
post
Post #5





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Ponownie czyli jak? Bo jest na poniżej dopisany event po kliknięciu na to.


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





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Po pobieżnej analizie problemu sugeruje zmienić
Kod
$(".zaswiec").click(function(){...
na
Kod
$(".zaswiec").live('click',function(){...
i podobnie dla .zgas .

Ten post edytował lord_t 19.02.2010, 21:25:16


--------------------
Go to the top of the page
+Quote Post
deha21
post
Post #7





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Live załatwiło sprawę wielkie dzięki.


--------------------
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: 22.08.2025 - 11:35