Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jquery: pobieranie nazwy klasy kliknietego obiektu
shimano
post 21.04.2010, 18:37:49
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

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


Witam,

Na bank banał, więc z góry przepraszam.
Próbuję odnaleźć sposób, żeby pobrać nazwę klasy klikniętego obiektu.

Coś na styl:
Kod
$(this).click(function () {
    var nazwa_klasy = $(this).attr('class');
});


Oczywiście to nie działa, mimo że teoretycznie powinno. Czy da się to jakoś zrobić?
Go to the top of the page
+Quote Post
1010
post 21.04.2010, 19:46:53
Post #2





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


A działać powinno, próbowałeś dostawić alert(nazwa_klasy);

Wyświetla coś?


--------------------
Go to the top of the page
+Quote Post
shimano
post 21.04.2010, 19:50:28
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

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


Cytat(1010 @ 21.04.2010, 19:46:53 ) *
A działać powinno, próbowałeś dostawić alert(nazwa_klasy);

Wyświetla coś?


Wiesz, jakby działało to napewno nie zwracałbym się tutaj z takim problemem.

P.S.
U Ciebie (u Was) działa?
Go to the top of the page
+Quote Post
1010
post 21.04.2010, 20:02:29
Post #4





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


Wierzę Ci na słowo, że nie działa, ale nie zechciałeś mi odpowiedzieć na pytanie które mogłoby pomóc w rozwiązaniu problemu.


--------------------
Go to the top of the page
+Quote Post
shimano
post 21.04.2010, 20:27:19
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

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


Oczywiście, że próbowałem. A czy Ty sprawdzałeś, czy u Ciebie działa? Jak u mnie nie działa, to i u Ciebie też nie powinno. Widać to wcale nie jest poprawne, mimo że na logikę tak powinno być. Za mało znam się na Jquery i JS, żeby stwierdzić, dlaczego ten kod jest niepoprawny.
Go to the top of the page
+Quote Post
1010
post 21.04.2010, 21:26:34
Post #6





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


Owszem, u mnie działa. Specjalnie przygotowałem:

http://kalinowski.prohost.pl/test/class/#

Kod:

index.html
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="class.js"></script>
</head>
<body>
    <a href="#" class='asd'>asd</a>
    <br /><a href="#" class='qwe'>qwe</a>

</body>
</html>


class.js
Kod
$(document).ready(function() {
    $('a').click(function(){
        var aaa = $(this).attr('class');
        
        alert(aaa);
    });

});




Edit... ale ale... zaraz zaraz... teraz zauważyłem...

Co to jest $(this) w pierwszej linijce? Do jakiego niby elementu chcesz się odnieść?

Ten post edytował 1010 21.04.2010, 21:27:53


--------------------
Go to the top of the page
+Quote Post
shimano
post 22.04.2010, 09:19:52
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

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


Cytat(1010 @ 21.04.2010, 21:26:34 ) *
Edit... ale ale... zaraz zaraz... teraz zauważyłem...

Co to jest $(this) w pierwszej linijce? Do jakiego niby elementu chcesz się odnieść?


Te $(this) w pierwszej linijce to tylko przykład - zobrazowanie. W rzeczywistości u mnie będzie się to odnosić do $(document) - całości strony lub może jakiegoś większego elementu.


Ten post edytował shimano 22.04.2010, 09:21:40
Go to the top of the page
+Quote Post
1010
post 22.04.2010, 10:55:55
Post #8





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


Ok, tylko pamiętaj, że drugie $(this) jest ściśle powiązane z tym dla jakiego elementu ustawisz zdarzenie. Dlatego ustawienie tam $(document) chyba nie jest najlepszym pomysłem, bo czy cały dokument ma atrybut class?

Lepszy rozwiązaniem jest ustawienie tam

$('a') - dla wszystkich linków,
$('div') - dla wszystkich divów,
$('img') - dla wszystkich img,

ale to już zależy od zastosowania na którym Ci zależy


--------------------
Go to the top of the page
+Quote Post
wookieb
post 22.04.2010, 11:14:38
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




[JAVASCRIPT] pobierz, plaintext
  1. $(document).click(function(e)
  2. {
  3. $(e.target).attr('class');
  4. });
[JAVASCRIPT] pobierz, plaintext


Tylko UWAGA. Nie wyłapiesz zdarzenia na elementach, które wcześniej obsługujesz. Np
[JAVASCRIPT] pobierz, plaintext
  1. $('.main').click(function()
  2. {
  3. return false;
  4. });
[JAVASCRIPT] pobierz, plaintext

Nie wyłapiesz kliknięcia w elementy z klasą .main
Dlatego zamiast return false spróbowałbym dać
[JAVASCRIPT] pobierz, plaintext
  1. e.preventDefault(); // pamietaj o dodanie e w parametrze handlera
[JAVASCRIPT] pobierz, plaintext


Ten post edytował wookieb 22.04.2010, 11:22:05


--------------------
Go to the top of the page
+Quote Post
shimano
post 22.04.2010, 12:45:07
Post #10





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.06.2009

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


Dzięki wookieb ;]
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 Wersja Lo-Fi Aktualny czas: 23.04.2024 - 17:37