2012-10-18 5 views
6

Powiel możliwe:
jQuery .attr retrieving custom attribute returns undefinedTworzenie nowego atrybutu z jQuery

Mam dziwny problem, ale mam nadzieję, jestem po prostu robi coś głupiego. Próbuję utworzyć nowy atrybut elementu <img> użyciu jQuery, a ta linia:

$(selector).attr('selected', 'no'); 

Kiedy sprawdzać DOM w Chrome, ja po prostu zobaczyć wybrany = „wybrany”, bez względu na to, co mam ustawić wartość do.

Tylko kilka dodatkowych informacji: Nie mogę używać tylko wartości logicznych, ponieważ muszę śledzić wartości właściwości "Tak", "Nie" i "Częściowe". Wywołuję funkcję JS z zdarzenia "onClick" samego pliku img i przekazuję this jako parametr. Sprawdziłem obiekt w metodzie, a właściwy obiekt został przekazany; fakt, że atrybut jest ustawiony (nawet jeśli do niewłaściwej wartości) również to obsługuje.

Jestem martwy, jestem pewien, że robię coś głupiego tutaj ... Każda rada byłaby doceniona.

Odpowiedz

11

Wybrany jest już atrybutem w standardzie HTML, więc nie można utworzyć niestandardowego atrybutu o tej samej nazwie. W takim przypadku należy zamiast tego użyć atrybutów data- i na przykład utworzyć atrybut data-selected.

W jQuery obsługiwane są niestandardowe atrybuty danych za pomocą metody .data().

Niestandardowe atrybuty danych opisano w specyfikacji HTML5 here.

5

można wstawić data-* niestandardowych atrybutów jak tak

$(selector).data('selected', 'no'); 

Twój elementem będzie ustawiony atrybut data-selected

własność
1

DOM jest inny niż atrybut DOM;)

Sugeruję przy użyciu $(selector).data() dla Twojego przypadku użycia.

2

Jeśli chcesz dołączyć dowolne dane do elementu, użyj .data(), a nie .attr().