jquery的attr()與prop()方法的區別
阿新 • • 發佈:2019-01-22
結論
- 對於HTML元素本身就帶有的
固有屬性
,處理時使用prop
方法。 - 對於HTML元素
自定義屬性
,處理時使用attr
方法。
固有屬性
指的是HTML標籤原生支援的屬性,如a
標籤原生支援的屬性有:download
、href
、hreflang
、media
、rel
、target
、type
,這些屬性是W3C組織確定的,可通過W3School查詢.
自定義屬性
指的是自己為HTML標籤定義的屬性,如:<a href="#" data-event="delete">刪除</a>
中的data-event
即為自定義屬性
使用場景
<body>
<form >
<input type="checkbox" name="hobby" value="movie" /> 電影
<input type="checkbox" name="hobby" value="music" checked="checked" /> 音樂
<select name="主食">
<option value="rice">米飯</option>
<option value="noodles" selected="selected" >麵條</option>
</select>
</form>
<button id="btn1">測試attr</button>
<button id="btn2">測試prop</button>
<script type="text/javascript" src="js/jquery.min.js" ></script>
// 上述js請改為你本地的
<script>
$('#btn1').click(function (){
console.log($('[value="movie"]').attr('checked')); // undefined
console.log($('[value="music"]').attr('checked')); // checked
console.log($('[value="rice"]').attr('selected')); // undefined
console.log($('[value="noodles"]').attr('selected')); // selected
});
$('#btn2').click(function(){
console.log($('[value="movie"]').prop('checked')); // false
console.log($('[value="music"]').prop('checked')); // true
console.log($('[value="rice"]').prop('selected')); // false
console.log($('[value="noodles"]').prop('selected')); // true
});
</script>
</body>
對於checked
或者selected
屬性,請使用prop
方法,他返回的是選中狀態:true
或者false
,使用attr
方法,返回的是checked
或者selected
屬性的屬性值,如果沒有新增該屬性,返回undefined
,如上面的例子。