@@@@屬性篇:
寫作本篇文章的意義:jQuery的教程千千萬,卻沒有英文版的API講的系統、到位,一些話用中文翻譯過來味道就變了,所以我將英文版的API的一些常用的方法單獨提出來放在這里,並用自己的實踐+理解陳述,在大家懶得查看官網的時候可以做為參考。
屬性的作用的原文描述:These methods get and set DOM attributes of elements.即用來獲取/設置DOM元素的屬性的值;我們經常需要在頁面中從元素中取值和設值,這些方法使用頻次“非常高”!所以掌握它是成為牛逼工程師必須的基本功啦!
|||||| .addClass()
Description: Adds the specified class(es) to each element in the set of matched elements.
添加指定的類到匹配元素集合中的每一個元素。
1、.addClass(className)
類型:String
一個或多個類(用空格隔開)添加到匹配的元素的class屬性。
2、.addClass(function)
類型:Function(Integer index , String currentClassName)==>String
$("p").addClass("myClass yourClass");
②切換元素的類從一個到另一個:
$("p").removeClass("myClass noClass").addClass("yourClass");
所有p段落中的myClass和noClass都被移除,yourClass則被加入到所有匹配的p元素中。
③接收一個function函數:
$("ul li").addClass(function( index ){
return "item-"+index;
})
如果給定無序列表中的兩個<li>元素,那么上面的函數的作用是將在第一個<li>中加入item-0類,第二個<li>中加入item-1類。
|||||| .attr()
Description:Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.
獲取匹配元素集合的屬性的第一個元素的值,或者設置一個或多個屬性給匹配的每個元素。
.attr(attributeName);//只獲取匹配元素集合的第一個元素的屬性值,想要獲取多個值可以利用jQuery的.each()或.map()方法
.attr(attributeName,value);//給制定的屬性設置值
①獲取屬性值:
<body>
<input id="check1" checked="checked" type="checkbox" />
<label for="check1" >check me</label>
<script>
$("input").change(function(){
var $input=$("input[id='check1']");
$("p").html("通過.attr('checked')獲取checked的值:"+$input.attr("checked")+<br>
"通過.prop('checked')獲取checked的屬性值:"+$input.prop("checked")+<br>
"通過.is(':checked')獲取checked的屬性值:"+$input.is(":checked")+<br>
}
</script>
</body>
結果: Check me
.attr( 'checked' ): checked//取值
.prop( 'checked' ): true//判斷
.is( ':checked' ): true//判斷
上面針對checkbox的情況,相對比較特殊,.attr()是取得屬性的值,.prop()在checked, selected, disabled三個DOM元素屬性取值時,返回的結果是布爾型,其他情況下都是返回屬性值。
示例:
<style>
em {
color: blue;
font-weight: bold;
}
div {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Once there was a <em title="huge, gigantic">large</em> dinosaur...</p>
The title of the emphasis is:<div></div>
<script>
var title = $( "em" ).attr( "title" );
//var title=$("em").prop("title");與.attr()效果一樣
$( "div" ).text( title );
</script>
當設置checkbox的選中情況時:
<body>
<input type="checkbox" checked="checked">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox" checked="checked">
<script>
$( "input[type='checkbox']" ).attr("checked",false);
$("input[type='checkbox']").prop("checked",false);//與.attr()效果一樣
</script>
</body>
②設置屬性值:
.attr(attributeName,value):這種方法設置屬性值非常方便,且看:
<img id="greatPhoto" src="1.jsp" alt="this is a photo" />
<script>
$("#greatPhoto").attr("alt","come form my world!");
</script>
設置多個屬性值:
$( "#greatPhoto" ).attr({
alt: "Beijing Brush Seller",
title: "photo by Kelly Clark"
});
用函數來設置值:
<scirpt>
$("#greatephoto").attr(function( i , val){//獲取第i個id值為greatphoto的變量值val,此處的i即是id的索引值,val為其對應的id值
return val+"change";
})
</script>
設置id的div基於頁面中的位置:
<body>
<div>Zero-th <span></span></div>
<div>First <span></span></div>
<div>Second <span></span></div>
<script>
$("div").attr("id".function(arr){//設置id的屬性值,arr的值即是id屬性的值,此處沒有用變量i來對應,因為下面用了.each()來循環設置
return arr+"div-id";
}).each(function(){//循環追加信息
$("span",this).html("id='<b>"+this.id+"</b>'");//this指代當前循環的"span"對象
})
</script>
</body>
|||||| .hasClass()
Description: Determine whether any of the matched elements are assigned the given class.
用來判斷是否有匹配的類。應用相對比較簡單,看例即知:
<div id="mydiv" class="foo bar"></div> //判斷是否含有類 $( "#mydiv" ).hasClass( "foo" )
|||||| .html()
Description: Get the HTML contents of the first element in the set of matched elements.
用來獲取匹配的元素集合的第一個元素的文本內容。
<div class="demo-container"> <div class="demo-box">Demonstration Box</div> </div> //獲取div中的內容 $( "div.demo-container" ).html();
當.html()方法中輸入內容時,則會改變對應元素的文本內容。
|||||| .removeAttr()
Description: Remove an attribute from each element in the set of matched elements.
清除所有匹配的元素集合的元素。
.removeAttr()方法是從javascript中的.removeAttribute()繼承過來,但是jQuery的此方法可以在不同版本的瀏覽器上運行。
.removeAttr(attributeName)需要的類型是String類型:
下面這個例子比較經典,略帶一點邏輯:
<button>Change title</button>
<input type="text" title="hello there">
<div id="log"></div>
<script>
(function() {
var inputTitle = $( "input" ).attr( "title" );
$( "button" ).click(function() {
var input = $( this ).next();//選擇同級元素的下一個元素,也就是下面那個div標簽對象
if ( input.attr( "title" ) == inputTitle ) {//如果div對象的title值與input對象的title值相同就清除div對象的title屬性值,不相同的情況下則添加input對象的title屬性值給div對象
input.removeAttr( "title" )
} else {
input.attr( "title", inputTitle );
}
$( "#log" ).html( "input title is now " + input.attr( "title" ) );
});
})();
</script>
.removeAttr()與.removeProp()的作用基本相似。
|||||| .val()
Description: Get the current value of the first element in the set of matched elements.
獲取匹配元素集合的第一個元素的值。
注意事項:The .val() method is primarily used to get the values of form elements such as input, select and textarea. When called on an empty collection, it returns undefined.
通常用於input、select、textarea。
//獲取下拉框的foo類中被選中的項的值 $( "select.foo option:selected").val(); // 獲取所有foo類的下拉框的值 $( "select.foo" ).val(); // 獲取被選中的復選框的值 $( "input:checkbox:checked" ).val(); // 獲取被選中的單選按鈕的值 $( "input:radio[name=bar]:checked" ).val();
下面的例子實現:單選下拉框顯示選項的值,多選下拉框顯示選中項的值:
<p></p>
<select id="single">
<option>Single</option>
<option>Single2</option>
</select>
<select id="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<script>
function displayVals(){
var singleVal=$("#single").val();
var multipleVals=$("#multiple").val()|| [];//這樣寫也可以:var multipleVals=$("#multiple").val();
$("p").html(singleVal+" "+multipleVals.join(","));
}
displayVals();//調用displayVal()方法
$("select").change(displayVals);//當select對象的選項改變時,調用change方法,調用displayVals()方法,如果不加此行,則在變換的時候,不會調用displayVal()這個方法。
</script>
從input對象中取值:
<div>
<input type="text" value="some words" />
<p></p>
</div>
<script>
$("input").keyup(function(){
var inputValue=$(this).val();
$("p").text(inputValue);
}).keyup();
</script>
||| .val(value)、.val(function)
Description: Set the value of each element in the set of matched elements.
給匹配元素集合的每一個元素設值。
① 點擊各個button后將其文本值賦給input對象的文本域:
<div>
<button>Filed1</button>
<button>Filed0</button>
<button>Filed1</button>
<input type="text" />
</div>
<script>
$("button").click(function(){
$("input").val($(this).text());
})
</script>
②使用函數聲明修改Input對象的值:
<div>
<input type="text" value="do something"/>
<input type="text" value="do something"/>
<input type="text" value="do something"/>
</div>
<script>
$("input").blur(function(){//當Input對象失去焦點的時候,函數開始
$(this).val(function(i,val){//取得第i個input對象的value值
return val.toUpperCase();//把這個值轉換成大寫
}) ;
})
</script>
至此,所有jQuery的常用屬性類方法已經整理完畢。
