day25總結:jQuery基礎(2019-05-21)

1.什么是jQuery

  • jQuery本質就是js,它是為了能夠更方便的使用js而封裝的一個庫
  • js可以將任何內容轉換js對象,例如:document、節點、事件對象;jQuery提供的方法只支持jQuery對象
  • 在jQuery中 $ 代表jQuery
  • $ ( ):創建jQuery對象的語法,例如:document( js對象); $(document)( jQuery對象)
  • 注意:如果想要使用jQuery必須先在head中導入jQuery的js文件
// 導入方法1:導入本地jQuery文件
<script type="text/javascript" src="js/jquery.min.js"></script>

// 導入方法2:導入文件地址(企業開發時常用)
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1
/jquery.min.js"></script>

2.ready方法

  • 等待網頁中內容加載完成,和onload功能一樣
  • 語法:
             $(document).ready(function(){
                頁面加載完成后才會執行的代碼
             })
             
             簡寫:   //常用
             $(function(){
                頁面加載完成后才會執行的代碼
             })
  • 實例:
            $(document).ready(function(){
                
                pNode = document.getElementById('p1')
                console.log(pNode)
            })
            
            簡寫:
            $(function(){
                pNode = document.getElementById('p1')
                console.log(pNode)
            })

3.節點操作

1)獲取節點

  • 語法: $(選擇器)
  • 說明: 選擇器 - 和CSS中的選擇器一樣
  • 注意加引號的問題
1.1)普通選擇器:
  • 和css一樣的
  • 注意:遍歷jQ數組取出來的是js對象(JQuery對象可以理解為由1個或多個Js對象組成的數組)
            var pNode = $('#p1')
            console.log(pNode)
            pNode.text('新的段落1')
            
            pNodes = $('.cp1')
            console.log(pNodes)
            pNodes.text('新的段落2')
            for(x=0;x<pNodes.length;x++){
                const p = pNodes[x]  // 遍歷取出來的是js對象
                $(p).text(x)
            }
            
            pNode = $('div p')
            console.log('===:',pNode)
1.2)其他特殊情況:
  • 選擇器1>選擇器2:選中選擇器1中的選擇器2對應的直系子標簽
  • 選擇器1+選擇器2:選中緊跟著選擇器1的選擇器2(選擇器1和選擇器2對應的標簽必須是兄弟關系)
  • 選擇器1~選擇器2:選中離選擇器1最近的選擇器2(選擇器1和選擇器2對應的標簽必須是兄弟關系)
  • 選擇器:first:第一個選擇器
  • 選擇器:last:最后一個選擇器
  • 選擇器 *:first-child:選中選擇器中第一個子標簽
            pNode = $('div>p')
            console.log('===:',pNode)
            
            pNode = $('#p1 + div')
            console.log('===:',pNode)
            
            pNode = $('#p1~p')
            console.log('===:',pNode)
            
            pNode = $('p:first')
            console.log('===:',pNode)
            
            pNode = $('#div2>p:first')
            console.log('===:',pNode)
            
            pNode = $('#div2>p:last')
            console.log('===:',pNode)
            
            var xNode = $('#div2>*:first-child')
            console.log('===:',xNode)

2)創建節點(標簽)

  • $(HTML代碼):返回標簽對應的jQuery對象
$("<p id='p1'>我是一個段落</p>")

aNode = $("<a )

3)添加節點

  • jq節點1.append(jq節點2):在節點1中的最后添加節點2
  • 節點1.prepend(節點2):在節點1的最前面插入節點2
  • 節點1.before(節點2):在節點1的前面插入節點2
  • 節點1.after(節點2):在節點1的后面插入節點2
            //1)jq節點1.append(jq節點2)  - 在節點1中的最后添加節點2
            $('#box1').append(aNode)
            $('#box1').append($('<img src="img/luffy.jpg"/>'))
            
            //2)節點1.prepend(節點2)  - 在節點1的最前面插入節點2
            $('#box1').prepend($('<h1>我是標題1</h1>'))
            
            //3)節點1.before(節點2)  - 在節點1的前面插入節點2
            $('#p1').before($('<p>我是段落0</p>'))
            
            //4)節點1.after(節點2)  - 在節點1的后面插入節點2
            $('#p1').after($('<p>我是段落2</p>'))

4)刪除節點

  • jq對象.remove():刪除指定節點
  • jq對象.empty():清空指定節點
            //1)jq對象.remove()  - 刪除指定節點
            $('#box1 p').remove()
            
            //2)jq對象.empty() - 清空指定節點
            $('#box1').empty()
            //$('#box1 *').remove()    #  '#box1 *' 選中id是box1中所有的后代

4.屬性操作

1)標簽內容屬性

  • innerHTML、innerText、value
  • 雙標簽.html() - (相當于innerHTML):節點.html() - 獲取節點內容; 節點.html(值) - 給節點內容賦值
  • 雙標簽.text() - (相當于innerText)
  • 單標簽.val() - (相當于value)
  • 注意:上面的函數不傳參就是獲取值,傳參就是修改值
 console.log($('#box2 #div1').html())  // 獲取
 $('#box2 #div1').html('<a >我是超鏈接 
 </a>')   // 添加
 $('#box2 input').val('小明')   // 添加

2)普通屬性

  • 節點.attr(屬性名):獲取指定節點指定屬性的值
  • 節點.attr(屬性名,值):修改指定節點指定屬性的值
console.log($('#box2 input').attr('type'))
$('#box2 input').attr('type', 'password')

3)class屬性

  • 節點.addClass(值):添加class屬性值
  • 節點.removeClass(值):移除指定的class值
$('#h1').addClass('c2')
$('#h1').removeClass('c1')

4)樣式屬性

  • 獲取樣式屬性的值:節點.css(樣式屬性名)
  • 修改樣式屬性的值:
    修改單個:節點.css(樣式屬性名,值)
    修改多個:節點.css(對象)= 節點.css({屬性名1:值1, 屬性名2:值2,...})
            //1)獲取樣式屬性的值
            //節點.css(樣式屬性名)
            console.log($('#h1').css('color'))
            //2)修改樣式屬性的值
            //節點.css(樣式屬性名,值)
            $('#h1').css('color', 'deeppink')
            $('#h1').css('font-size', '30px')
            
            //節點.css(對象) - 同時設置多種樣式
            $('#h1').css({
                    'width':'300px',
                    'color':'blue',
                    'text-decoration': 'underline'
            })
                console.log($('#h1'))

5.事件綁定

1)直接綁定

  • 節點.on(事件名,函數):給節點綁定指定的事件,事件名不需要on,和js中的addEventLinsenner功能一樣
  • 注意:函數中this是js對象,evt是jQuery對象
                $('button').on('click', function(evt){
                    console.log(this)
                    console.log(evt)
                    
                //1)this是js對象
                //====js代碼
                if(this.innerText == '暫停'){
                    this.innerText = '播放'
                }else{
                    this.innerText = '暫停'
                }
                
                //====jQuery代碼
                if($(this).text() == '暫停'){
                    $(this).text('播放')
                }else{
                    $(this).text('暫停')
                }
                
            // 2) evt是事件對象不是節點對象,所以獲取屬性的時候以對象獲取屬性的方式來獲取
                console.log(evt.clientX, evt.clientY)   
                })

2)間接傳遞

  • 父節點.on(事件名,選擇器,函數):給指定節點綁定指定事件,并且讓節點中選擇器對應的子標簽對事件做出反應(即把事件綁定在父標簽上,但是是由子標簽做出反應)
  • 在父標簽上添加事件,傳遞給選擇器對應的子標簽;選擇器:前面標簽(父節點)的后代標簽
  • 函數中this是js對象,指向的是選擇器對應的子標簽
            //錯誤示范:如果使用直接綁定的方式,新添加的標簽就不能綁定上對應的事件
            /*
            $('#box3 input').on('click', function(){
                    console.log(this)
                    alert(this.value+'被點擊')
            })
            
            $('#box3').append($('<input type="button" value="按鈕3"/>'))
            */
           //選擇器input是#box3下的子標簽
           $('#box3').on('click','input', function(){
                console.log(this)
                alert(this.value+'被點擊')
           })
           $('#box3').append($('<input type="button" value="按鈕3"/>'))
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380