Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jquery: pobieranie nazwy klasy kliknietego obiektu
Forum PHP.pl > Forum > XML, AJAX
shimano
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ć?
1010
A działać powinno, próbowałeś dostawić alert(nazwa_klasy);

Wyświetla coś?
shimano
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?
1010
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.
shimano
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.
1010
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ść?
shimano
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.
1010
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
wookieb
[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
shimano
Dzięki wookieb ;]
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.