整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          jQuery對標簽屬性操作方法的匯總

          jQuery對標簽屬性操作方法的匯總

          屬性操作

          attr(name):獲取屬性值

          attr(key,value):設置屬性值

          attr(properties):一次設置多個屬性值, 要求參數是一個json對象

          removeAttr(name):移除屬性

          2 對class屬性的操作

          addClass(class):添加class

          removeClass(class):移除class

          toggleClass(class):如果有對應的class屬性值, 則移除, 反之則添加

          hasClass(class):如果有對應的class屬性值, 則返回true, 反之返回false

          3 對style屬性的操作

          css(name):獲取到指定的css屬性值

          css(name,value):設置指定的css屬性值

          css(properties):一次設置多個css屬性值 要求參數必須是json對象

          4 尺寸

          width(): 獲取元素的寬度

          width(value): 設置元素的寬度

          height(): 獲取元素的高度

          height(value):設置元素的高度

          5 文本

          innerHTML() javascript方法

          html(): 獲取雙邊標簽中的內容

          html(val): 設置雙邊標簽中的內容

          innerTEXT javascript方法, 兼容性差

          text(): 獲取雙邊標簽中的內容, 不能解析HTML標簽

          text(val): 設置雙邊標簽中的內容, 不能解析HTML標簽

          6 表單的值

          val(): 獲取元素的value屬性值

          val(val):設置元素的value屬性值


          屬性和屬性值語法規則:

          1 可以不加單位, 但帶單位的必須加引號

          $("img").attr({
              src: "img07.jpg",
              title: "紫荊公寓",
              width:300, //參考HTML語法, 可以不加單位
              height:"200px", //也可以加單位, 但必須加引號
              alt: "紫荊公寓"
          });

          2 帶橫線的必須加引號

          $('div').css({
              "font-size":"40px", //帶橫線的必須加引號
              "font-weight":"bold",
              color:"red"
          });

          3 css樣式可以采用駝峰式寫法(第二個單詞的首字母必須大寫)

          $('div').css({
              fontSize:"40px", //駝峰式寫法, 可以不加引號
              "font-weight":"bold",
              color:"red"
          });

          4 鍵/值的引號問題

          鍵可以加引號, 也可不加引號;

          但是對值要求很嚴格, 字符串型的必須加引號

          $("img").attr({
          src: "img07.jpg", //值是字符串型必須加引號
          "title": "紫荊公寓", //鍵可加也可不加引號
          width:300,
          height:"200px",
          alt: "紫荊公寓"
          });


          5 采用json寫法的鍵/值對格式:用英文","隔開


          ext()方法會把包含的字符轉義處理,html()則不會.所謂轉義就是字符的另一種顯示方法,例如"<" 顯示成 "<",這就是轉義了,其中的<就是<的轉義字符.還有很多可以轉義的字符,可以搜索下看看.


          下邊是項目中用到的2個語句:span中包含了jquery的語句輸出結果.


          1. $('.title').text("<img src=" ">");


          顯示結果為<img src=" ">,這里的<img src=" ">不會被解析成html的img標簽,而是以存字母文字的形式顯示,也就是單純的字符串:<img src=" "> .并且f12查看源碼時看到span包含的<img src=" ">文字內容外層有雙引號哦.看下圖,


          ?


          如果你用右鍵選擇編輯為html,則看到其中的轉義字符<這就說明我們的<被轉移了,


          ?


          如果我們想把<img>顯示成標簽,被瀏覽器解析.那么就需要如下方法.



          2. $('.title').html("<img >");


          顯示結果為解析后的html代碼段,那么這里的<img >就會按照h5的標簽img圖片進行解析顯示了.下圖是f12的頁面代碼結果span中的<img>標簽外層無雙引號,且頁面此時會顯示出來圖片.


          ?



          ?

          、概覽

          jQuery官網:https://jquery.com/
          jQuery是一個高效、輕量并且功能豐富的js庫。
          核心在于查詢query。
          jQuery是一個優秀的js函數庫,是React/Vue/Angular框架之外中大型項目的首選。
          jQuery的主旨是write less, do more。

          1.1 jQuery的功能

          • html元素的選取
          • 操作html元素
          • css操作
          • html事件處理
          • 實現js動畫效果
          • 能夠鏈式調用
          • 容易擴展插件
          • 封裝了ajax

          1.2 引入jQuery庫

          引入jQuery的方式有2種,一種是項目中直接引入jQuery的min.js文件,一種是使用服務器端jQuery文件(使用cdn)腳本標簽方式引入。

          1.2.1 本地項目引入

          在官網的:https://jquery.com/download/ 鏈接下可以下載到完整的代碼,放到項目文件的js文件夾下。

          <script src="static/js/jquery-3.7.1.min.js"></script>

          1.2.2 cdn方式引入

          在網站:https://www.bootcdn.cn/ 可以獲得穩定、快速、免費的cdn加速服務。

          <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>

          1.2.3 版本兼容

          • 1.x 版本兼容老版本的IE,文件比較大
          • 2.x 版本文件比較小,支持IE8+
          • 3.x 版本引入部分新API,提供多個分包的版本,支持IE9+

          1.2.4 開發的正確姿勢

          開發過程中一般使用非min.js文件方便調試,生產環境部署上線時才使用min.js這種壓縮文件。

          二、jQuery源碼淺析

          2.1 匿名函數調用

          從源碼中可以看出,jQuery的整體邏輯可以用以下簡單的結構進行描述:

          ( function( global, factory ) {
              // 判斷有無window環境的一堆邏輯代碼
          })( typeof window !=="undefined" ? window : this, function( window, noGlobal ) {
              // 構造jQuery的一些邏輯代碼
              return jQuery
          });

          2.2 jQuery是一個函數

          從源碼中可以看出,jQuery被定義為一個函數,函數中返回了一個實例對象(看new關鍵字)。

          繼續跟蹤源碼 new jQuery.fn.init( selector, context),這個函數中調用了makeArray,當然在其他if判斷語句中也有返回偽數組對象(比如,定義了length字段,還有[0]的操作),這里拿makeArray作為演示。

          查看makeArray函數:

          所以這個返回實例對象,是一個偽數組。

          $('#menu-trigger') instanceof Array // false
          $('#menu-trigger') instanceof Object // true

          2.3 jQuery掛載在window上

          從源碼中可以看出,將jQuery函數和window.$ 以及window.jQuery綁定賦值,所以使用jQuery和$ 標識符就可以直接使用jQuery。通常在項目中直接使用$標識符,快捷簡省。

          2.4 jQuery驗證

          所以在引入jQuery的項目中:

          console.log(typeof $); // function
          console.log($===jQuery); // true
          console.log($() instanceof Object); // true

          三、jQuery常見用法

          3.1 函數形式調用

          通常形式為:$(param)

          • param為函數:dom加載完成后,執行該回調函數
          • param為選擇器字符串:查找與該選擇器匹配的所有標簽,并封裝成jQuery對象
          • param為dom對象:將該dom對象封裝成jQuery對象
          • param為標簽字符串:創建標簽對象并封裝成jQuery對象
          $(function() {
              console.log("dom finished and execute this");
          })
          
          $('#btn').click(function () {
              // 這里的this是id為#btn的dom元素
              console.log(this.innerHTML)
              
              console.log($(this).html())
          })
          
          $('<input type="number"></input>').appendTo('div')

          3.2 點語法調用函數

          let list=[1, 2, 3]
          $.each(list, function(i, ele) {
              console.log(i, ele)
          })
          
          $.trim(' hello world ')

          3.3 用法淺析

          • jQuery函數返回的是一個偽數組(Object對象),可以使用length和下標。
          // class中名為btn的dom元素有多少
          $('.btn').length
          
          $('.btn')[0]
          
          $('.btn').get(0)
          
          $('.btn').index()
          
          // 設置名為btn的class對應的dom標簽的文本內容
          $('.btn').text('自定義文本內容')

          通過$(param)傳入的是selector、element、標簽情況下,返回的是包含1個或者多個dom元素對象的偽數組。

          3.4 獲取一組dom元素的常見用法

          // 基礎標簽和class
          // 選擇了所有的div和span標簽
          $('div, span')
          
          // 選擇所有具有某個class的標簽
          $('div.container')
          
          // 層次選擇器
          $('ul span') // ul標簽下的所有span元素
          $('ul>span') // ul標簽下的所有子span元素
          $('.container+li') // class為container的元素后的下一個li元素
          $('ul .item~*') // class為item的元素后面所有兄弟元素
          
          // 過濾選擇器
          $('div:first') // 選擇第一個div
          $('div:last') // 最后一個div
          $('div:not(.container)') // class不為container的所有div
          $('div:lt(3):gt(0)') // 所有div元素中的大于0小于3的div元素,表示1和2索引處的dom元素
          $('div:containers("hello world")') // 內容為hellow world的div元素
          $('div:hidden') // style中display: none的div元素
          $('div[data]') // 有data屬性的div元素, example: <div data=""></div>
          $('div[data="123"]') // 有data屬性且值為123的div元素, example: <div data="123"></div>
          
          // 示例,使table表格的奇數行背景樣式設置
          $('table>tbody>tr:odd')
          
          // form表單中
          $(':text') // 所有單行輸入框
          $(':text:disabled') // 所有disabled的input輸入框
          $(':checkbox') // 所有checkbox
          $(':checkbox:checked') // 所有選中的checkbox
          $('select').val() // select標簽選中的option的value值

          3.5 修改css

          直接修改css屬性(如果其dom標簽存在這個css屬性)

          $('#container').css('background', 'red');
          
          $('#container').css({ 'background' : 'red', 'color': 'blue' }) // 一組屬性

          清空某標簽下的所有dom:

          $('.carousel-inner').empty();

          給某標簽下添加dom標簽:

          $('.carousel-inner').append(domStr);

          移除、添加class:

          $('.carousel-indicators li').removeClass('active');
          $('.carousel-indicators li:first').addClass('active');

          3.6 獲取屬性

          獲取dom標簽上的屬性:

           $('.about-img-1>img').attr('src');

          設置標簽的屬性:

           $('.about-img-1>img').attr('src', (data && data['image']) ? data['image'] : '');

          3.7 一些dom事件

          點擊:

          $('.category-product-page-ul>li').click(function(e) {
              e.preventDefault();
              console.log('this is:', this); // 打印對應的dom標簽
          });

          hover:

          $('#container').hover(  
              function() {  
                  // 當鼠標進入元素時執行的函數
              },
              function() {  
                  // 當鼠標離開元素時執行的函數
              }  
            );

          監聽事件:

          $('.bigImage').on("mousemove", function( e ) {
              // do something
          });

          3.8 發起ajax請求

          const json='/static/js/data/xxx.json';
           $.ajax({
              url: json,  
              dataType: 'json',  
              success: function(data) {
                // do something
              },
              error: function(jqXHR, textStatus, errorThrown) {  
                console.error('Fail to read json:', textStatus, errorThrown, json);
              }  
            });

          post請求:


          主站蜘蛛池模板: 欧美日韩国产免费一区二区三区 | 亚洲午夜精品第一区二区8050| 一区二区三区免费电影| 人妻AV一区二区三区精品| 国产一区二区四区在线观看 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 国产精品盗摄一区二区在线| 亚洲午夜精品一区二区公牛电影院| 国产一区二区三区电影| av一区二区三区人妻少妇| 亚洲一区在线观看视频| 无码人妻久久一区二区三区| 亚洲av成人一区二区三区在线观看| 日本一区二区三区久久| 风间由美在线亚洲一区| 无码人妻啪啪一区二区| 无码少妇一区二区浪潮免费| 国产美女在线一区二区三区| 日韩精品一区二区三区中文精品| 亚洲视频一区调教| 精品无码AV一区二区三区不卡| 日韩免费观看一区| 无码人妻精品一区二区| 亚洲一区二区中文| 亚洲视频一区二区三区四区| 精品福利视频一区二区三区 | 国产手机精品一区二区| 成人中文字幕一区二区三区| 亚洲日韩国产一区二区三区在线| 51视频国产精品一区二区| 亚洲AV无码一区二区大桥未久| 波多野结衣AV一区二区三区中文| 国产成人一区二区三区电影网站| 日韩免费无码一区二区视频| 日韩av片无码一区二区三区不卡 | 精品成人乱色一区二区| 免费高清av一区二区三区| 高清一区二区在线观看| 日本一区午夜艳熟免费| 国产精品日本一区二区在线播放| 无码人妻精品一区二区三区在线 |