1. 程式人生 > >jquery 1.6釋出後,增加prop()方法部分取代attr()方法

jquery 1.6釋出後,增加prop()方法部分取代attr()方法

以前的jq中,全部使用attr來訪問物件的屬性,比如取一個圖片的alt屬性,就可以這樣做$('#img').attr('alt');但是在某些時候,比如訪問checkbox的disabled屬性的時候,會有些問題。用JQuery的時候發現一個問題用.attr("checked")獲取checkbox的checked屬性時選中的時候可以取到值,值為"checked"但沒選中獲取值就是undefined.有些瀏覽器中比如說只要寫disabled,checked就可以了,而有的要寫成disabled = "disabled",checked="checked"。所以,從1.6開始,jq提供新的方法“prop”來獲取這些屬性。 以前我們使用attr獲取checked屬性時返回"checked"和"",現在使用prop方法獲取屬性則統一返回true和false。使用prop的時候,返回值是標準屬性,true/false,比如$('#checkbox').prop('disabled'),不會返回“disabled”或者“”,只會是true/false。當然賦值的時候也是如此。如此,我們便統一了所有操作,無論是從語法上還是語義上。那麼,哪些屬性應該用attr訪問,哪些應該用prop訪問呢?一個原則是,只新增屬性名不新增屬性值就會生效;第二個原則是,只存在true/false的屬性,按照官方文件,如下:
Attribute/Property.attr().prop()
accesskey
align
async
autofocus
checked
class
contenteditable
draggable
href
id
label
location ( i.e. window.location )
multiple
readOnly
rel
selected
src
tabindex
title
type
width ( if needed over .width() )
什麼時候使用attr,什麼時候使用prop??1.新增屬性名稱該屬性就會生效應該使用prop.2.是有true,false兩個屬性使用prop.

3.其他則使用attr

原文連結:https://www.cnblogs.com/jellychow/p/3139908.html