<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 操作DOM jQuery的選擇器很強大,用起來又簡單又靈活,但是搞了這么久,我拿到了jQuery對象,到底要干什么? 答案當然是操作對應的DOM節點啦! 回顧一下修改DOM的CSS、文本、設置HTML有多么麻煩,而且有的瀏覽器只有innerHTML,有的瀏覽器支持innerText,有了jQuery對象,不需要考慮瀏覽器差異了,全部統一操作! ## 修改Text和HTML jQuery對象的`text()`和`html()`方法分別獲取節點的文本和原始HTML文本,例如,如下的HTML結構: ``` <!-- HTML結構 --> <ul id="test-ul"> <li class="js">JavaScript</li> <li name="book">Java &amp; JavaScript</li> </ul> ``` 分別獲取文本和HTML: ``` $('#test-ul li[name=book]').text(); // 'Java & JavaScript' $('#test-ul li[name=book]').html(); // 'Java &amp; JavaScript' ``` 如何設置文本或HTML?jQuery的API設計非常巧妙:無參數調用`text()`是獲取文本,傳入參數就變成設置文本,HTML也是類似操作,自己動手試試: ``` 'use strict'; var j1 = $('#test-ul li.js'); var j2 = $('#test-ul li[name=book]'); j1.html('<span style="color: red">JavaScript</span>'); j2.text('JavaScript & ECMAScript'); ``` 一個jQuery對象可以包含0個或任意個DOM對象,它的方法實際上會作用在對應的每個DOM節點上。在上面的例子中試試: ``` $('#test-ul li').text('JS'); // 是不是兩個節點都變成了JS? ``` 所以jQuery對象的另一個好處是我們可以執行一個操作,作用在對應的一組DOM節點上。即使選擇器沒有返回任何DOM節點,調用jQuery對象的方法仍然不會報錯: ``` // 如果不存在id為not-exist的節點: $('#not-exist').text('Hello'); // 代碼不報錯,沒有節點被設置為'Hello' ``` 這意味著jQuery幫你免去了許多`if`語句。 ## 修改CSS jQuery對象有“批量操作”的特點,這用于修改CSS實在是太方便了。考慮下面的HTML結構: ``` <!-- HTML結構 --> <ul id="test-css"> <li class="lang dy"><span>JavaScript</span></li> <li class="lang"><span>Java</span></li> <li class="lang dy"><span>Python</span></li> <li class="lang"><span>Swift</span></li> <li class="lang dy"><span>Scheme</span></li> </ul> ``` 要高亮顯示動態語言,調用jQuery對象的`css('name', 'value')`方法,我們用一行語句實現: ``` 'use strict'; $('#test-css li.dy>span').css('background-color', '#ffd351').css('color', 'red'); ``` _注意_,jQuery對象的所有方法都返回一個jQuery對象(可能是新的也可能是自身),這樣我們可以進行鏈式調用,非常方便。 jQuery對象的`css()`方法可以這么用: ``` var div = $('#test-div'); div.css('color'); // '#000033', 獲取CSS屬性 div.css('color', '#336699'); // 設置CSS屬性 div.css('color', ''); // 清除CSS屬性 ``` 為了和JavaScript保持一致,CSS屬性可以用`'background-color'`和`'backgroundColor'`兩種格式。 `css()`方法將作用于DOM節點的`style`屬性,具有最高優先級。如果要修改`class`屬性,可以用jQuery提供的下列方法: ``` var div = $('#test-div'); div.hasClass('highlight'); // false, class是否包含highlight div.addClass('highlight'); // 添加highlight這個class div.removeClass('highlight'); // 刪除highlight這個class ``` 練習:分別用`css()`方法和`addClass()`方法高亮顯示JavaScript: ``` <!-- HTML結構 --> <style> .highlight { color: #dd1144; background-color: #ffd351; } </style> <div id="test-highlight-css"> <ul> <li class="py"><span>Python</span></li> <li class="js"><span>JavaScript</span></li> <li class="sw"><span>Swift</span></li> <li class="hk"><span>Haskell</span></li> </ul> </div> ``` ``` 'use strict'; var div = $('#test-highlight-css'); // TODO: ``` ## 顯示和隱藏DOM 要隱藏一個DOM,我們可以設置CSS的`display`屬性為`none`,利用`css()`方法就可以實現。不過,要顯示這個DOM就需要恢復原有的`display`屬性,這就得先記下來原有的`display`屬性到底是`block`還是`inline`還是別的值。 考慮到顯示和隱藏DOM元素使用非常普遍,jQuery直接提供`show()`和`hide()`方法,我們不用關心它是如何修改`display`屬性的,總之它能正常工作: ``` var a = $('a[target=_blank]'); a.hide(); // 隱藏 a.show(); // 顯示 ``` _注意_,隱藏DOM節點并未改變DOM樹的結構,它只影響DOM節點的顯示。這和刪除DOM節點是不同的。 ## 獲取DOM信息 利用jQuery對象的若干方法,我們直接可以獲取DOM的高寬等信息,而無需針對不同瀏覽器編寫特定代碼: ``` // 瀏覽器可視窗口大小: $(window).width(); // 800 $(window).height(); // 600 // HTML文檔大小: $(document).width(); // 800 $(document).height(); // 3500 // 某個div的大小: var div = $('#test-div'); div.width(); // 600 div.height(); // 300 div.width(400); // 設置CSS屬性 width: 400px,是否生效要看CSS是否有效 div.height('200px'); // 設置CSS屬性 height: 200px,是否生效要看CSS是否有效 ``` `attr()`和`removeAttr()`方法用于操作DOM節點的屬性: ``` // <div id="test-div" name="Test" start="1">...</div> var div = $('#test-div'); div.attr('data'); // undefined, 屬性不存在 div.attr('name'); // 'Test' div.attr('name', 'Hello'); // div的name屬性變為'Hello' div.removeAttr('name'); // 刪除name屬性 div.attr('name'); // undefined ``` `prop()`方法和`attr()`類似,但是HTML5規定有一種屬性在DOM節點中可以沒有值,只有出現與不出現兩種,例如: ``` <input id="test-radio" type="radio" name="test" checked value="1"> ``` 等價于: ``` <input id="test-radio" type="radio" name="test" checked="checked" value="1"> ``` `attr()`和`prop()`對于屬性`checked`處理有所不同: ``` var radio = $('#test-radio'); radio.attr('checked'); // 'checked' radio.prop('checked'); // true ``` `prop()`返回值更合理一些。不過,用`is()`方法判斷更好: ``` var radio = $('#test-radio'); radio.is(':checked'); // true ``` 類似的屬性還有`selected`,處理時最好用`is(':selected')`。 ## 操作表單 對于表單元素,jQuery對象統一提供`val()`方法獲取和設置對應的`value`屬性: ``` /* <input id="test-input" name="email" value=""> <select id="test-select" name="city"> <option value="BJ" selected>Beijing</option> <option value="SH">Shanghai</option> <option value="SZ">Shenzhen</option> </select> <textarea id="test-textarea">Hello</textarea> */ var input = $('#test-input'), select = $('#test-select'), textarea = $('#test-textarea'); input.val(); // 'test' input.val('abc@example.com'); // 文本框的內容已變為abc@example.com select.val(); // 'BJ' select.val('SH'); // 選擇框已變為Shanghai textarea.val(); // 'Hello' textarea.val('Hi'); // 文本區域已更新為'Hi' ``` 可見,一個`val()`就統一了各種輸入框的取值和賦值的問題。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看