2013-04-17 9 views
59

Widziałem w niektórych miejscach .attr() jest używany w jQuery.W niektórych miejscach .prop() jest używany.But Szukałem w SO i google jestem bardzo zdezorientowany .Proszę powiedzieć mi dokładną różnicę między tych dwóch i kiedy z nich korzystać.Różnica między prop() i attr() w jQuery i kiedy używać attr() i prop()

Widziałem poniższe linki jQuery attr vs. prop, there are a list of props? jQuery attr vs prop?

Ale nie dostał me.thanks answer.Please pomoc z góry.

Przed udzieleniem obniżki poproś o wyjaśnienie przyczyny, a następnie poprawię w następnym poście.

Odpowiedz

65

od docs

Różnica między atrybutów i właściwości mogą być ważne w określonych sytuacjach. Przed wersją jQuery 1.6 metoda .attr() czasami uwzględniała wartości właściwości podczas pobierania niektórych atrybutów, co może powodować niespójne zachowanie. Od wersji jQuery 1.6 metoda .prop() zapewnia sposób jawnego pobierania wartości właściwości, podczas gdy .attr() pobiera atrybuty.

przykład

Przykładowo selectedIndex, zmienne, nodeName nodeType, ownerDocument, defaultChecked i defaultSelected należy pobrać i ustawić metodą .prop(). Przed wersją jQuery 1.6 właściwości te można było odzyskać za pomocą metody .attr(), ale nie mieściło się to w zakresie atr. Nie mają odpowiednich atrybutów i są tylko właściwościami.

aktualizowane po komentarzu

Można ustawić atrybut do elementu HTML. Definiujesz go podczas pisania kodu źródłowego, po tym jak przeglądarka przeanalizuje Twój kod, zostanie utworzony odpowiedni węzeł DOM, który jest obiektem posiadającym właściwości.

Prosty przykład może być ..

<input type="test" value="test" id="test" /> 

Tutaj rodzaj, wartość, id są attributes.Once przeglądarka renderuje go, dostaniesz inne właściwości jak align, alt, autofocus, baseURI, sprawdzone i tak dalej.

link jeśli chcesz dowiedzieć się więcej na ten temat

+0

JSFiddle Test z przyłączonej strony jest tak przydatne, Dziękujemy. – QMaster

4

JQuery to zmieniająca się biblioteka, która czasami dokonuje regularnych ulepszeń. Metoda .attr() służy do uzyskiwania atrybutów z tagów HTML, a gdy jest całkowicie funkcjonalna, dodatek .prop() został dodany później, aby był bardziej semantyczny i działa lepiej z atrybutami bez wartości, takimi jak "sprawdzone" i "wybrane".

Zaleca się, aby w przypadku korzystania z nowszej wersji JQuery, w miarę możliwości używać funkcji .prop().

48

.attr() zmian atrybutów dla tego tagu HTML.

.prop() zmienia właściwości dla tego znacznika HTML zgodnie z drzewem DOM.

Jak sugeruje przykład w tym linku. Pole wejściowe może mieć atrybut "wartość". To będzie równa domyślnej wprowadzonej wartości. Jeśli użytkownik zmieni wartość w polu wejściowym, właściwość "wartość" zmieni się w drzewie DOM, ale pozostanie pierwotny atrybut.

Zasadniczo, jeśli chcesz ustawić wartość domyślną dla atrybutu znacznika HTML, użyj funkcji .attr(). Jeśli ta wartość może zostać zmieniona przez użytkownika (np. Wejścia, pola wyboru, radia itp.), Użyj funkcji .prop(), aby uzyskać najnowszą wartość.

http://jquery-howto.blogspot.com/2011/06/html-difference-between-attribute-and.html