[JavaScript][jQuery] wszystkie atrybuty obiektu DOM

0

Witam.
Załóżmy, że mamy:
<img src="image.jpg" alt="obrazek" title="zwykły jpg">
Potrzebuję funkcji, która zwróci mi wszystkie atrybuty i ich wartości w tablicy.
Wiem, że gdzieś już to kiedyś widziałem. Szukałem, ale nic nie udało mi się teraz znaleźć:(.
Ma ktoś jakiś pomysł?
Z góry dzięki.

0

kurcze...zdążyłem temat założyć i od razu znalazłem ;)
Jakby ktoś potrzebował:

var attrib = $('img')[0].attributes;
var ile = attrib.length;
for(i=0;i<ile;i++){
     alert(attrib[i].name+':'+attrib[i].value)
}
0

Upiększona wersja: :-)

var i= attrib.length;
while(i--)){
     alert(attrib[i].name+':'+attrib[i].value)
}
0

@yelon:
@Deti:
Chciałbym uściślić, że ładna wersja Detiego (przydatna gdy programista/zespół jest przyzwyczajony do takiej pętli) nie jest dokładnie tym, co klasyczny for yelona. W rzadkich, ale praktycznych przypadkach różnica może być istotna.

Otóż lista attributes[index] zwraca listę atrybutów w kolejności, w jakiej wystąpiły w kodzie źródłowym. W każdym razie powinna to robić. Dla niektórych aplikacji może to mieć znaczenie. Pętla Detiego oczywiście odwraca tę kolejność, więc nie zawsze można jej użyć. Choć nie pamiętam, czy w ogóle kiedyś zależało mi na kolejności atrybutów.

Abstrahując od tej -- zwykle nieistotnej -- różnicy, mam dla Was niestety potencjalnie złą wiadomość. attributes[index] jest słabo/głupio wspierane przez przeglądarki. Tylko przeglądarki najlepiej wspierające standardy ogarniają tę własność prawidłowo. Najnowsze IE (wersja 8) i Firefox (3.5) niestety nie. W przypadku tych przeglądarek błąd nie jest poważny: po prostu podają atrybuty w nieprawidłowej kolejności. Kolejność jednak pewnie nie ma tutaj takiego znaczenia, więc to nie jest duży problem.

Znacznie gorsza sytuacja jest w przypadku starszych wersji IE. IE5, IE6 i niestety również IE7 podają listę... wszystkich możliwych atrybutów, jakie mogą zostać zdefiniowane w elemencie! Nie ogranicza się nawet do atrybutów elementu img, tylko w ogóle wszystkich atrybutów jakichkolwiek elementów w HTML-u. Jeśli piszesz kod, który ma działać również w IE6/7, to musisz wziąć to pod uwagę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1