class屬性修改
類屬性即class屬性,規定類名.
用類選擇器規定樣式的時候,需要為元素指定類名,即class屬性的值.
注意每個HTML元素只有一個class屬性.但是class屬性的值可以是多個名稱,即可能包含一個詞的列表,中間用空格分隔.
用jQuery進行類名修改既可以用attr()方法修改”class”屬性,也可以用addClass(), removeClass(),toggleClass()等方法來完成.
addClass()
addClass()方法向匹配的元素增加指定的類名(一個或多個).
注意對于元素來說,class屬性可以有多個值.該方法不會移除已經存在的值,而是在原有的基礎上追加一個或多個class屬性.
用attr()方法設置class屬性,是一個覆蓋的過程;而addClass()則是一個追加的過程.
class之間最終是用空格來隔開的.
如果需要添加多個類,用空格分隔類名.
從1.4開始,這個方法的參數也可以傳入一個function.
removeClass()
removeClass()方法從被選元素移除一個或多個類.如需移除若干類,用空格來分隔類名.
如果沒有傳參數,該方法將會移除被選元素的所有類.
toggleClass()
toggleClass()方法對被選元素的一個或多個類進行切換(設置或移除).
該方法檢查每個元素中的指定類,如果存在則刪除,如果不存在則添加.
通過添加參數,可以設置只進行刪除或者只進行添加操作.
格式:$(selector).toggleClass(class,switch)
switch值為true時,只添加;為false時,只刪除.
hasClass()
hasClass()方法檢查被選元素是否包含指定的class.
還可以用is()方法實現同樣的功能,方法參數傳入一個選擇器字符串,比如”.className”.
CSS樣式修改
jQuery中還有一些方法直接返回或者設置元素的CSS屬性.
css()
讀操作: 獲取匹配元素集合中第一個元素的指定樣式值(一個或多個).
注:讀取多個樣式值的操作是在jQuery v1.9才加入的.
寫操作: 為匹配元素集合中的每一個元素設置一個或多個CSS屬性的值.
傳入的參數可以是單個的鍵值對,也可以是PlainObject指定的多個值,還可以是function.(v1.4).
jQuery會處理各個瀏覽器中不太相同的一些具體情況,比如W3C的cssFloat在IE中是styleFloat,在jQuery中,你可以使用float,然后jQuery會幫你把它翻譯成每個瀏覽器中應該有的正確名稱.
還有,jQuery會合理解讀CSS和DOM格式的多詞屬性,比如.css(“background-color”)和.css(“backgroundColor”),它都是可以處理的.
height()和width()
高度和寬度屬性.這個寬高值不包括padding,border和margin.除非box-sizing屬性被使用了.
注意寫操作的時候set的是content的寬高,不包括box-sizing的部分.
讀操作仍然是返回集合第一個元素的屬性值.
.css(“width”)和.width()的區別是:前者返回帶單位的值,比如400px;后者返回不帶單位的像素數值,即400.
所以如果值需要被用于某種計算,.height()和.width()是被推薦使用的.
讀取得到的數值不一定是整型,并且如果用戶縮放了頁面,其值可能是不正確的,因為瀏覽器沒有暴露這種情況的API.
還有一種不準確的情況,當這個元素的父元素隱藏起來時,該元素的尺寸可能讀不準.
寫操作支持的value類型是字符串或者數字.
如果是數字,jQuery默認是px為單位.
如果是字符串,除了可以數字加單位之外,任何合理的CSS measurement都可以用,比如100%,50%,或者auto.
position()
返回第一個匹配元素相對于父元素(offset parent)的位置.
只有讀操作.
offset()
返回第一個匹配元素的坐標,或者設定每一個匹配元素的坐標,這個坐標是相對于document的.
offsetParent()
返回父類,只有讀操作.
scrollLeft()和scrollTop()
參考資料
圣思園張龍老師JavaWeb視頻教程75
jQuery API: http://api.jquery.com/
w3school 參考手冊: