jQuery框架之Style(一)

一、jQuery

jQuery相信前端開(kāi)發(fā)者,再熟悉不過(guò)了。它是一個(gè)快速,簡(jiǎn)潔的Javascript框架。jQuery的宗旨:write Less,Do More!對(duì)于正在學(xué)習(xí)Html5的我來(lái)說(shuō),學(xué)習(xí)jQuery是必經(jīng)之路。下面,就把學(xué)到的一些知識(shí)點(diǎn)與大家共勉。

二、Selector(選擇器)

在jQuery中,我們會(huì)用到提供的一些選擇器,以至于幫助我們更快找到指定的節(jié)點(diǎn)。不管什么選擇器都是 $(xx)

1)id選擇器

id就是用來(lái)查找元素的唯一標(biāo)志,即元素的id屬性。id是唯一的,每個(gè)頁(yè)面只能有一個(gè)id值。

$("#id")

其實(shí)這個(gè)選擇器內(nèi)部實(shí)現(xiàn),就是調(diào)用了js的原生代碼 document.getElementById()

2)class選擇器

class選擇器就是通過(guò)class樣式來(lái)獲取元素節(jié)點(diǎn)。它不像id選擇器那樣,class選擇器可以多選,所以效率就會(huì)第一點(diǎn),有利有弊吧。

$(".class")

其實(shí)它就是原生js中getElementsByClassName()函數(shù)來(lái)實(shí)現(xiàn)的。

3)element選擇器

元素選擇器就是根據(jù)Html標(biāo)記名稱(chēng)來(lái)獲取所有元素的。

$("element")

它會(huì)查詢(xún)到指定元素標(biāo)簽名下的所有節(jié)點(diǎn),同樣的 也可以用原生js方法來(lái)獲取getElementsByTagName()

4)* 選擇器

*號(hào)的意思 作為程序員 基本都能 想到吧,就是所有的意思:所有的元素

$(" * ")

其實(shí) 通過(guò)js的方法 document.getElementsByTagName() 中傳遞"*"也可以拿到。

5)層級(jí)選擇器

層級(jí)選擇器我理解的意思其實(shí)就是父子,兄弟姐妹,祖孫的關(guān)系。
即:子元素 后代元素 兄弟元素 相鄰元素。

  1. 后代選擇器 (空格標(biāo)示)
// 后代選擇器  即選中元素的 : 所有后代元素(兒子 孫子 曾孫子)
$("p  descendant") 
  1. 子選擇器 (>)
// 子選擇器 選擇所有父元素的 指定的 直接  child元素
$("parent > child")
  1. 相鄰兄弟選擇器 (+)
// 選擇所有 緊鄰 在 pre元素后的 第一個(gè) 兄弟元素
$("pre + next")
  1. 一般兄弟選擇器 (~)
// 選擇所有 pre元素后的 所有 兄弟姐妹元素 必須具有相同的父輩。
$("pre ~ sibling")

PS:(這里我列舉了一些常用的選擇器 篩選選擇器和css中的偽元素相識(shí) 即 以 : 開(kāi)頭。jQuery中的合集索引都是從 0 開(kāi)始的 )

6)篩選選擇器
  1. 選擇第一個(gè)元素
// 選擇第一個(gè)元素
$(":first")
  1. 選擇最后一個(gè)元素
$(":last")
  1. 選擇所有元素去除 不匹配 給定的選擇器元素
//選擇 沒(méi)有選中屬性的 input標(biāo)簽
$("input:not(:checked)")
  1. 選擇匹配集合索引為index 的元素
$("p:eq(index)")
  1. 選擇所有大于給定index的元素
$("p:gt(index)")
  1. 選擇所有小于給定index的元素
$("p:lt(index)")
  1. 索引為偶數(shù)的元素 從index為0開(kāi)始
$("p:even")
  1. 索引為奇數(shù)的元素 從index為0開(kāi)始
$("p:odd")
  1. 選擇所有標(biāo)題元素 h1 - h2 -h3 .....
$(":header")
  1. 選擇所有執(zhí)行動(dòng)畫(huà)的元素
$(":animated")
7) 內(nèi)容篩選選擇器
  1. 選擇所有包含 指定文本的元素
$(":contains(text)")
  1. 選擇至少包含指定元素的元素
$(":has(ele)")
  1. 選擇所有 包含 子元素或者文本的元素
// 子元素文本不能為空的元素
$(":paraent")
  1. 選擇所有 不包含子元素的元素(包含文本節(jié)點(diǎn))
// 無(wú)子元素 或者 有文本 的元素
$(":empty")
8) 屬性選擇器
  1. 選擇指定屬性是給定值的元素
//查找所有div中,屬性name=p1的div元素
$("div[name = 'p1']")
  1. 選擇指定屬性包含一個(gè)給定字符串的元素 (或選擇給定的屬性是以包含某些值的元素)
//查找所有div中,有屬性name中的值包含一個(gè)test字符串的div元素
$("div[name *= "test"]")
$("div[name *= "xx-test-xx"]")
9) 子元素篩選選擇器
  1. 選擇所有父級(jí)元素下的第一個(gè)子元素
// 它和 選擇器 :frist 的區(qū)別就是  :first-child 即為每個(gè)父級(jí)元素匹配第一個(gè)子元素。  而:first只匹配一個(gè)元素
$(":first-child")
  1. 選擇所有父級(jí)元素下的最后一個(gè)子元素
//// 它和 選擇器 :last 的區(qū)別就是  :last-child 即為每個(gè)父級(jí)元素匹配最后一個(gè)子元素。  而:last只匹配一個(gè)元素
$(":last-child")
  1. 唯一子元素選擇器
//如果某元素是唯一的子元素 它就會(huì)被選中
$(":only-child")
  1. 選擇他們所有父元素的第n個(gè)子元素
//$(".last-div a:nth-child(2)") 查找class為last-div 下的第二個(gè)子元素
$(":nth-child") 
  1. 選擇他們所有父元素的第n個(gè)子元素 計(jì)數(shù)從最后一個(gè)開(kāi)始計(jì)數(shù)
//$(".last-div a:nth-last-child(2)") 查找class為last-div 下的倒數(shù)第二個(gè)子元素
$(":nth-last-child") 
10) 表單元素選擇器
  1. 選擇所有 input textarea select button 元素
$(":input") 
  1. 匹配所有文本框
$(":text")
  1. 匹配所有單選按鈕
$(":radio")
  1. 匹配所有復(fù)選框
$(":checkBox")
  1. 匹配所有按鈕
$(":button")

6.選取可用的表單元素

$(":enabled")

7.選取不可用的表單元素

$(":disabled")
  1. 選取被選中的<input>元素
$(":checked")
  1. 選取被選中的<option>元素
$(":selected")

三、屬性、樣式

1) attr設(shè)置屬性

在jQuery中可以用attr()設(shè)置元素屬性。

  1. attr(proName):獲取屬性的值
    2.attr(proName,vlaue):設(shè)置屬性的值
    3.attr(proName,函數(shù)值):設(shè)置屬性的函數(shù)值
    4.attr(attributes):設(shè)置多個(gè)屬性 :{name : vlaue,name2:vlaue}
2) removeAttr移除屬性
$("p").removeAttr(attName) // 移除p元素的某屬性
3) 修改元素的html結(jié)構(gòu) 或者文本 html() / text()
  • html()
    1.html() 不傳參數(shù) :即獲得第一個(gè)匹配元素的html文檔結(jié)構(gòu)
    2.html(htmlstring): 設(shè)置每一個(gè)匹配元素的html內(nèi)容
    3.html(function(index,oldHtml)):返回設(shè)置html內(nèi)容的一個(gè)函數(shù)
  $("p").html(function(index,text){
            return '增加內(nèi)容' + text
        })
  • text()
    獲取每個(gè)匹配元素的文本內(nèi)容,包括他的后代,也可以設(shè)置匹配元素的文本內(nèi)容。其結(jié)果返回一個(gè)字符串,包含所有匹配元素的合并文本。
    1.text():獲取匹配元素集合中每個(gè)元素的合并文本
    2.text(string) : 用于設(shè)置匹配元素的文本
    3.text(function(index,text))
  • html() 與 text() 異同
    1.html()處理的是元素內(nèi)容,而text()處理的是文本內(nèi)容
    2.html()只能用在html文檔中 text()可用在xml和html中
4) val()

這個(gè)方法主要用于獲取表單元素的值 :input、textarea、select
1.val()無(wú)參數(shù) :獲取匹配元素集合中第一個(gè)元素的當(dāng)前值
2..val(v):設(shè)置匹配元素中每個(gè)元素的值
3.val(function):用來(lái)返回設(shè)置值的函數(shù)
當(dāng)select有多個(gè)組時(shí),.val()返回一個(gè)包含選擇項(xiàng)的值的數(shù)組。
.val() .html() .text() 三個(gè)方法都可以用來(lái)讀取指定元素的內(nèi)容 ,html()讀取的是html內(nèi)容或者h(yuǎn)tml標(biāo)簽 ,.text()只是獲取純文本包括其后代 ,.val()只是獲取表單元素的值 并且只能用于表單。若html()用在多個(gè)元素上 只是獲取第一個(gè)元素的值 .val()也是如此。但是.text()用在多個(gè)元素上時(shí) 是獲取的所有元素文本的內(nèi)容

5)增加樣式addClass() 移除樣式removeClass()
  • addClass()
    在html中 多個(gè)class樣式 可以用空格隔開(kāi) addClass可以動(dòng)態(tài)增加class名字,它并不會(huì)替換一個(gè)樣式名,只是簡(jiǎn)單的添加一個(gè)樣式到元素上
    1.addClass(className):為每個(gè)匹配元素增加一個(gè)或者多個(gè)樣式名
    2.addClass(function(indecx,currentClass)):
        //通過(guò)className(fucntion)方法
        //這個(gè)函數(shù)返回一個(gè)或更多用空格隔開(kāi)的要增加的樣式名。
        //接收index 參數(shù)表示元素在匹配集合中的索引位置和html 參數(shù)表示元素上原來(lái)的 HTML 內(nèi)容
 $("div").addClass(function(index,className) {

            //找到類(lèi)名中包含了name的元素
            if(-1 !== className.indexOf('name')){
                //this指向匹配元素集合中的當(dāng)前元素
                $(this).addClass('xxClass')
            }
        });
  • removeClass()
    移除一個(gè)元素上的class樣式
    1.removeClass(className):移除一個(gè) 或者 多個(gè)用空格隔開(kāi)的樣式名
    2.removeClass(function(index,class)):返回一個(gè) 或者 多個(gè)將要移除的樣式名字
6) 切換樣式toggleClass()

即在addClass和removeClass之間的切換,存在就移除,不存在就添加
1.toggleClass(className):在匹配的元素集合中的每個(gè)元素切換一個(gè)或者多個(gè)樣式類(lèi)名
2.toggleClass(className,switch):switch布爾值,用于判斷是否應(yīng)該添加或者刪除
3..toggleClass( function(index, class, switch) [switch ] ):用來(lái)返回在匹配的元素集合中的每個(gè)元素上用來(lái)切換的樣式類(lèi)名的一個(gè)函數(shù)。接收元素的索引位置和元素舊的樣式類(lèi)作為參數(shù)

7) 切換操作css()

.css()獲取元素樣式屬性或者設(shè)置元素css屬性

  • 獲取
    1.css(proName):獲取匹配元素的屬性
    2.css(propertyNames):傳遞一個(gè)數(shù)組
  • 設(shè)置
  1. css(proName,vlaue)
    2.css( propertyName, function ):可以傳入一個(gè)回調(diào)函數(shù),返回取到對(duì)應(yīng)的值進(jìn)行處理
    3.css( properties ):可以傳一個(gè)對(duì)象,同時(shí)設(shè)置多個(gè)樣式
    css({ 'font-size' :"15px", "background-color" :"#40E0D0", "border" :"1px solid red" })

四、總結(jié)

jQuery還有好多方法,我這里總結(jié)了一下jQuery一下操作樣式的方法,后續(xù)會(huì)總結(jié)一些,jQuery事件,jQuery動(dòng)畫(huà)等。最近學(xué)前端學(xué)的感覺(jué)入門(mén)了不少,如果你想學(xué)一門(mén)新的語(yǔ)言,那就應(yīng)該去了解實(shí)踐它,不是你看看就可以學(xué)會(huì)的。在上篇文章中,我推薦的那本JavaScript的書(shū),寫(xiě)的很好,我基本每天中午午睡前都看那么幾頁(yè),在我看完后,會(huì)寫(xiě)一下心得,到時(shí)候會(huì)分享出來(lái)一起學(xué)習(xí)。
如果覺(jué)得我的文章寫(xiě)的不錯(cuò),給個(gè)小??吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容