this.id
(jak wiesz)
this.value
(w większości typów danych wejściowych. tylko problemy, które znam, to IE, gdy a <select>
nie ma value
ustawionych właściwości swoich <option>
elementów lub danych wejściowych radia w Safari).
this.className
aby uzyskać lub ustawić całą właściwość „class”
this.selectedIndex
przeciwko a, <select>
aby uzyskać wybrany indeks
this.options
przeciw a, <select>
aby uzyskać listę <option>
elementów
this.text
przeciwko, <option>
aby uzyskać jego treść tekstową
this.rows
przeciwko, <table>
aby uzyskać kolekcję <tr>
elementów
this.cells
przeciw a, <tr>
aby uzyskać jego komórki (td i th)
this.parentNode
uzyskać bezpośredniego rodzica
this.checked
aby uzyskać sprawdzony stan checkbox
Thanks @Tim Down
this.selected
aby uzyskać wybrany stan option
podziękowania @ Tim Down
this.disabled
aby uzyskać wyłączony stan input
Thanks @Tim Down
this.readOnly
aby uzyskać stan readOnly: input
Thanks @Tim Down
this.href
przeciwko <a>
elementowi, aby uzyskaćhref
this.hostname
przeciwko <a>
elementowi, aby uzyskać jego domenęhref
this.pathname
przeciwko <a>
elementowi, aby uzyskać ścieżkę jegohref
this.search
przeciwko <a>
elementowi, aby uzyskać jego kwerendęhref
this.src
przeciwko elementowi, w którym poprawne jest posiadanie src
... Myślę, że masz pomysł.
Będą chwile, kiedy wydajność będzie kluczowa. Na przykład, jeśli wykonujesz coś w pętli wiele razy, możesz porzucić jQuery.
Ogólnie możesz wymienić:
$(el).attr('someName');
z:
Powyżej było źle sformułowane. getAttribute
nie jest zamiennikiem, ale pobiera wartość atrybutu wysłanego z serwera, a odpowiadająca mu setAttribute
wartość ustawi go. Niezbędne w niektórych przypadkach.
Poniższe zdania w pewnym sensie to obejmowały. Zobacz tę odpowiedź, aby uzyskać lepsze leczenie.
el.getAttribute('someName');
... aby uzyskać bezpośredni dostęp do atrybutu. Zauważ, że atrybuty nie są takie same jak właściwości (choć czasami się odbijają). Oczywiście, że setAttribute
też.
Załóżmy, że wystąpiła sytuacja, w której otrzymałeś stronę, na której musisz rozpakować wszystkie tagi określonego typu. Jest to krótkie i łatwe w jQuery:
$('span').unwrap(); // unwrap all span elements
Ale jeśli jest ich wiele, możesz zrobić trochę natywnego interfejsu API DOM:
var spans = document.getElementsByTagName('span');
while( spans[0] ) {
var parent = spans[0].parentNode;
while( spans[0].firstChild ) {
parent.insertBefore( spans[0].firstChild, spans[0]);
}
parent.removeChild( spans[0] );
}
Ten kod jest dość krótki, działa lepiej niż wersja jQuery i można go łatwo przekształcić w funkcję wielokrotnego użytku w osobistej bibliotece.
Może się wydawać, że mam nieskończoną pętlę z zewnętrzną z while
powodu while(spans[0])
, ale ponieważ mamy do czynienia z „listą na żywo”, jest ona aktualizowana, gdy wykonujemy parent.removeChild(span[0]);
. Jest to całkiem sprytna funkcja, za którą tęsknimy podczas pracy z tablicą (lub obiektem podobnym do tablicy).
this.id
?