使用jQuery篩選排除元素以修改指定標簽的屬性

来源:http://www.cnblogs.com/crxis/archive/2017/06/21/7060928.html
-Advertisement-
Play Games

網頁中有很多個標簽,使用jQuery可以快速找到指定id或者class的標簽;jQuery的篩選功能很強大,還可以找父親、兄弟、上一個、下一個等等。 ...


簡單案例:

$(function(){
    $("td[id][id!='']").click(function(){
           //你的邏輯
    });
});

 上述代碼,有id且id不為空的td都會執行“你的邏輯”。

 

=======================轉載=======================

 

1、eq()    篩選指定索引號的元素
2、first()  篩選出第一個匹配的元素
3、last()   篩選出最後一個匹配的元素
4、hasClass()  檢查匹配的元素是否含有指定的類
5、filter()  篩選出與指定表達式匹配的元素集合
6、is()    檢查元素是否參數里能匹配上的
7、map()
8、has()  篩選出包含指定子元素的元素
9、not()  排除能夠被參數中匹配的元素
10、slice()    從指定索引開始,截取指定個數的元素
11、children()  篩選獲取指定元素的資源
12、closest()   從當前元素開始,返回最先匹配到的符合條件的父元素
13、find()    從指定元素中查找子元素
14、next()     獲取指定元素的下一個兄弟元素
15、nextAll()   獲取其後的所有兄弟元素
16、nextUntil()  獲取其後的元素,直到參數能匹配上的為止,不包括結束條件那個
17、offsetPosition()  返回第一個用於定位的祖先元素,即查找祖先元素中position為relative或absolute的元素。
18、parent()   獲取指定元素的直接父元素
19、parents()   獲取指定元素的所有祖先元素,一直到<body></body>
20、parentsUntil()  獲取指定元素的祖先元素,知道參數里能匹配到的為止
21、prev()    獲取指定元素的前一個兄弟元素
22、prevAll()   獲取指定元素前面的所有兄弟元素
23、prevUntil()   獲取指定元素前面的所有兄弟元素,直到參數里的條件能夠匹配到的。 註意參數條件本身不會被匹配
24、siblings()   獲取指定元素的兄弟元素,不分前後
25、add()    將選中的元素添加到jQuery對象集合中
26、andSelf()  將自身加到選中的jQuery集合中,以方便一次性操作
27、end()     將改變當前選擇器選中的操作回退為上一個狀態。
28、contents  未明白

************************* 篩選 ************************************

一、eq()  篩選指定索引號的元素

  語法:eq(index|-index)  索引號從0開始,若為負值,則從最後一個開始倒數,最後一個從-1開始

複製代碼
  $("p").eq(1);  //如果選擇器改為  $("p").eq(-1),則我是第四個P會被選中
       <div>     <p>我是第一個P</p>     <p>我是第二個P</p>  //會被選中,索引值為1     <p>我是第三個P</p>     <p>我是第四個P</p>   </div>  
複製代碼

二、first()  篩選出第一個匹配的元素

  語法:first()  此方法沒有參數

複製代碼
  $("p").first();
    
  <div>
    <p>我是第一個P</p>  //我的索引值是0,我是第一個,我會被選中
    <p>我是第二個P</p>
    <p>我是第三個P</p>
    <p>我是第四個P</p>
  </div>  
複製代碼

 三、last()  篩選出最後一個匹配的元素

   語法:last()  此方法沒有參數

複製代碼
  $("p").last();
    
  <div>
    <p>我是第一個P</p>
    <p>我是第二個P</p>
    <p>我是第三個P</p>
    <p>我是第四個P</p>    //我是最後一個,我會被選中
  </div>  
複製代碼

四、hasClass()  檢查匹配的元素是否含有指定的類

  語法:hasClass(class)  class為類別名  //返回布爾值

複製代碼
   if($("p").hasClass("p2"))
  {
    alert("我裡面含有class=p2的元素");  //會彈出,p里的確存在class="p2"的元素
  }
  <div>     <p>我是第一個P</p>     <p class="p2">我是第二個P</p>     <p>我是第三個P</p>     <p>我是第四個P</p>   </div>  
複製代碼

 五、filter()  篩選出與指定表達式匹配的元素集合

  語法:filter(expr|obj|ele|fn)  expr:匹配表達式|obj:jQuery對象,用於匹配現有元素 | DOM:用於匹配的DOM元素 | function返回值作為匹配條件

複製代碼
  $("p").filter(".p2");

  <div>     <p>我是第一個P</p>     <p class="p2">我是第二個P</p>  //我會被選中,我的class="p2"     <p>我是第三個P</p>     <p>我是第四個P</p>   </div>  
複製代碼

 六、is()    檢查元素是否參數里能匹配上的

  語法:is(expr|obj|ele|fn)  expr:匹配表達式|obj:jQuery對象,用於匹配現有元素 | DOM:用於匹配的DOM元素 | function返回值作為匹配條件

複製代碼
  $($("p").first().is(".p2"))
  {
    alert("不會彈出,因為第一個P的class不等於p2"); 
  }   <div>     <p>我是第一個P</p>     <p class="p2">我是第二個P</p>  //我會被選中,我的class="p2"     <p>我是第三個P</p>     <p>我是第四個P</p>   </div>  
複製代碼

七、map()

八、has()  篩選出包含指定子元素的元素

  語法:has(expr|ele)  expr:選擇表達式 | DOM元素選擇

複製代碼
  $("div").has("p");
 
  <div>                 //本div會被選中,因為該div含有p子元素
    <p>我是第一個P</p>
    <p class="p2">我是第二個P</p>
    <p>我是第三個P</p>
    <p>我是第四個P</p>
  </div>
  <div>
    <span>我是一個span</spam>
  </div>
複製代碼

九、not()  排除能夠被參數中匹配的元素

   語法:not(expr|ele|fn)  expr:選擇表達式 | DOM元素選擇 | fn的作用還不清楚

複製代碼
  $("p").not(".p2");
 
  <div>
    <p>我是第一個P</p>        //會被選中,沒有class=p2
    <p class="p2">我是第二個P</p>  //不會被選中,因為有class=p2被not(".p2")排除了
    <p>我是第三個P</p>        //會被選中,沒有class=p2
    <p>我是第四個P</p>         //會被選中,沒有class=p2
  </div>  
複製代碼

 十、slice()  從指定索引開始,截取指定個數的元素

   語法:slice(start, [end])   start位置, end可選,結束位置,不包含結束位置那個。如果不指定,則匹配到最後一個。

複製代碼
  $("p").slice(1,3)
 
  <div>
    <p>我是第一個P</p>        //不會被選中,我索引為0
    <p class="p2">我是第二個P</p>  //會被選中,我索引為1
    <p>我是第三個P</p>        //會被選中,我索引為2
    <p>我是第四個P</p>         //不會被選中,雖然我的索引為3,但是不包括我
  </div>  
複製代碼

 

********************** 篩選 *********************************

十一、children()  篩選獲取指定元素的資源

   語法:children(expr);  獲取指定元素的資源,expr為子元素篩選條件

複製代碼
  $("div").children(".p2");
 
  <div>
    <p>我是第一個P</p>        //不會被選中,雖然我是div的子元素,但是我沒class=p2
    <p class="p2">我是第二個P</p>  //會被選中,我既是p的子元素,又有class=p2
    <p>我是第三個P</p>        //不會被選中,雖然我是div的子元素,但是我沒class=p2
    <p>我是第四個P</p>         //不會被選中,雖然我是div的子元素,但是我沒class=p2
  </div>  
複製代碼

 十二、closest()  從當前元素開始,返回最先匹配到的符合條件的父元素

  $("span").closest("p","div");
  <div>                   //不會被選中,被P搶了先機
    <p>我是第一個P            //P會被選中,因為P符合條件,而且是最先匹配到的,雖然div也符合條件了,但是div不是最先匹配到的。因此div不會被選中。
      <span>我是P里的span</span>
    </p>   </div>  

十三、find()    從指定元素中查找子元素

   語法:find(expr|obj|ele)  expr:匹配表達式 | obj用於匹配的jQuery對象 | DOM元素

複製代碼
  $("div").find(".p2");    
  <div>     <p>我是第一個P</p>        //不會被選中,雖然我是div的子元素,但是我沒class=p2     <p class="p2">我是第二個P</p>  //會被選中,我既是p的子元素,又有class=p2     <p>我是第三個P</p>        //不會被選中,雖然我是div的子元素,但是我沒class=p2     <p>我是第四個P</p>         //不會被選中,雖然我是div的子元素,但是我沒class=p2   </div>  
複製代碼

十四、next()    獲取指定元素的下一個兄弟元素

   語法:next(expr)  expr:可選,篩選條件,如果下一個兄弟元素不符合改條件,則返回空。

複製代碼
  $(".p2").next();    //如果篩選改為$(".p2").next(".p4")那選中的是哪個呢?答案是:沒選中任何元素,因為雖然有個class=p4的P,但它不是.p2的下一個。      
  <div>
    <p>我是第一個P</p>        
    <p class="p2">我是第二個P</p>  
    <p>我是第三個P</p>        //我是.p2的next
    <p class="p4">我是第四個P</p>
  </div>  
複製代碼

十五、nextAll()    獲取其後的所有兄弟元素

    語法:nextAll(expr)  expr:可選,篩選條件,獲取其後符合expr條件的所有兄弟元素

複製代碼
  $(".p2").nextAll();  //如果篩選條件改為 $(".p2").nextAll(".p4");  則只有我是第四個P會被選中
  <div>     <p>我是第一個P</p>             <p class="p2">我是第二個P</p>      <p>我是第三個P</p>        //會被選中,是.p2後面的兄弟元素     <p class="p4">我是第四個P</p> //會被選中,是.p2後面的兄弟元素   </div>  
複製代碼

十六、nextUntil()  獲取其後的元素,直到參數能匹配上的為止,不包括結束條件那個

   語法:nextUntil([expr|ele][,fil])  expr篩選表達式 | DOM元素篩選,註意不包括參數里的那一個

複製代碼
  $(".p2").nextUntil(".p4");    //註意此方法並不會包括.p4
  <div>     <p>我是第一個P</p>             <p class="p2">我是第二個P</p>      <p>我是第三個P</p>        //會被選中,是.p2後面的兄弟元素     <p class="p4">我是第四個P</p> //不會被選中,我作為結束條件,但不包括我   </div>
複製代碼

十七、offsetPosition()  返回第一個用於定位的祖先元素,即查找祖先元素中position為relative或absolute的元素。

   語法:offsetPosition()  此方法沒有參數  由於CSS的絕對定位的定位基準是相對最近的一個已定位元素,因此此方法的作用不言而喻。

  $("span").offsetParent();
  <div style="position:relative">  //選中的是div,因此div是已定位元素。
    <p>
      <span>我是一個span</span>
    </p>
  </div>

 十八、parent()    獲取指定元素的直接父元素

    語法:parent(expr)  expr為篩選條件,如果直接父元素不符合條件,則不返回任何元素(無論它的祖先是否具有能與expr匹配的)

  $("span").parent();
  <div style="position:relative">  
    <p>                //我是span的直接父元素,我會被匹配到
      <span>我是一個span</span>
    </p>
  </div>

十九、parents()      獲取指定元素的所有祖先元素,一直到<body></body>

   語法:parents(expr)  expr為篩選條件,如果某個祖先元素不符合expr則排除

  $("span").parents();
  <div style="position:relative">  //我是span的祖先元素,我也會被匹配到.另外<body></body>也會被匹配到  
    <p>                //我是span的直接父元素,我會被匹配到
      <span>我是一個span</span>
    </p>
  </div>

二十、parentsUntil()  獲取指定元素的祖先元素,知道參數里能匹配到的為止

   語法:parentsUntil(expr)  expr為停止參數,一直匹配到expr為止,同時參數的條件是不會被匹配中的。

  $("span").parentsUntil("div");
  <div style="position:relative">  //我是span的祖先元素,但是我作為停止條件,我也不會被選中  
    <p>                //我是span的直接父元素,我會被選中
      <span>我是一個span</span>
    </p>
  </div>

 二十一、prev()    獲取指定元素的前一個兄弟元素

    語法:prev(expr)    expr:可選。當上一個兄弟元素不符合參數中的條件時,不返回任何元素。

複製代碼
  $(".p2").prev();    
  <div>
    <p>我是第一個P</p>      //我會被選中,我是.p2的前一個元素。
    <p class="p2">我是第二個P</p>  
    <p>我是第三個P</p>        
    <p class="p4">我是第四個P</p>   
  </div> 
複製代碼

二十二、prevAll()  獲取指定元素前面的所有兄弟元素

    語法:prevAll(expr)  expr:可選,排除所有不能夠被expr匹配上的元素

複製代碼
  $(".p4").prevAll(".p2");    
  <div>
    <p>我是第一個P</p>        //不會被選中,雖然我是.p4前面的兄弟元素,但是我沒有class=p2
    <p class="p2">我是第二個P</p>  //會被選中,我既是.p4前面的兄弟元素,而且我有class=p2
    <p>我是第三個P</p>        //不會被選中,雖然我是.p4前面的兄弟元素,但是我沒有class=p2
    <p class="p4">我是第四個P</p>  
  </div>
複製代碼

二十三、prevUntil()  獲取指定元素前面的所有兄弟元素,直到參數里的條件能夠匹配到的。 註意參數條件本身不會被匹配

    語法:prevUntil([expr|ele][,fil])  expr匹配表達式 | DOM元素匹配

複製代碼
  $(".p4").prevUntil(".p2");    
  <div>
    <p>我是第一個P</p>        //不會被選中,到p2就停止了
    <p class="p2">我是第二個P</p>  //不會被選中,我是停止條件,不包括我
    <p>我是第三個P</p>        //會被選中,我在.p2前,遞歸到我在到.p2
    <p class="p4">我是第四個P</p>  //不會被選中,我自己怎麼可能是我自己前面的呢?
  </div>
複製代碼

 

/********************  串聯 *******************************/ 

 

二十四、siblings()  獲取指定元素的兄弟元素,不分前後

    語法:siblings(expr);  expr為篩選條件,不符合條件的不會選中

複製代碼
  $(".p2").siblings();    
  <div>
    <p>我是第一個P</p>        //會被選中,我是.p2的兄弟元素
    <p class="p2">我是第二個P</p>  //不會被選中,我是自己
    <p>我是第三個P</p>        //會被選中,我是.p2的兄弟元素
    <p class="p4">我是第四個P</p>  //會被選中,我是.p2的兄弟元素
  </div>
複製代碼

 二十五、add()  將選中的元素添加到jQuery對象集合中

    add(expr|elements|html|jQueryObject)  expr:選擇器表達式 | DOM表達式 | Html片段 | jQuery對象,將jQuery對象集合一起方便操作;

複製代碼
  $(".p2").add("span").css("background-color","red");    
  <div>
    <p>我是第一個P</p>        
    <p class="p2">我是第二個P</p>  //會變紅
    <p>我是第三個P</p>        
    <p class="p4">我是第四個P</p>  
  </div>
  <span>我是一個span</span>      //會變紅
複製代碼

二十六、andSelf()  將自身加到選中的jQuery集合中,以方便一次性操作

    andSelf()  此方法無參數

複製代碼
  $(".p2").nextAll().andSelf().css("background-color","red");
  <div>
    <p>我是第一個P</p>        
    <p class="p2">我是第二個P</p>  //會變紅,這就是andSelf()的效果
    <p>我是第三個P</p>        //會變紅
    <p class="p4">我是第四個P</p>  //會變紅
  </div>
複製代碼

二十七、end()      將改變當前選擇器選中的操作回退為上一個狀態。

    end()   此方法沒有參數

複製代碼
  $(".p2").next().end().css("background-color","red");
  <div>
    <p>我是第一個P</p>        
    <p class="p2">我是第二個P</p>  //會變紅,這就end()的效果
    <p>我是第三個P</p>        //不會變紅,儘管next()方法之後選中的是這一個,但是由於被end()方法回退了因此是上一個。
    <p class="p4">我是第四個P</p>
  </div>
複製代碼

 二十八、contents  未明白


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目描述 Like everyone else, FJ is always thinking up ways to increase his revenue. To this end, he has set up a series of tolls that the cows will pay wh ...
  • 前臺下載 ...
  • 本文轉自:http://blog.csdn.net/sinat_37328421/article/details/69267166 比方說你想配置預設路由為: $route['default_controller'] = 'index/home'; ci3.0之前是可以放在 controllers中 ...
  • 最近使用vue2.0重構項目, 需要實現一個分頁的表格, 沒有找到合適的分頁組件, 就自己寫了一個, 效果如下: 該項目是使用 vue-cli搭建的, 如果你的項目中沒有使用webpack,請根據代碼自己調整: 首先新建pagination.vue文件, 所有組件的代碼都寫在這裡, 寫這樣的組件並沒 ...
  • 1.javascript的typeof返回哪些數據類型 alert(typeof [1, 2]); //object alert(typeof 'leipeng'); //string var i = true; alert(typeof i); //boolean alert(typeof 1); ...
  • 在js中,字元串轉為數字類型是比較常見的,平時用的比較多的是parseFloat和parseInt這兩個方法。當然,除了這個方法之外還有一個Number;都是轉為數字類型,有什麼差別? 可以簡單的說Number的局限性更大。也就是說Number比parseFloat和parseInt對字元串的要求更 ...
  • 上一章節我們說到,線性路徑的繪製,主要利用movoTo(),lineTo()等方法,當然 Canvas 2D API 也提供了虛線的繪製方法,CanvasRenderingContext2D.setLineDash(); 下麵我們就來看看虛線的繪製方法 語法 參數 segments: 一個Array ...
  • 關於px、pt和em的區別,自己有時候也會糾結到底該用什麼單位,今天特意查了一些文章,下麵這篇雖然很久遠了,但解釋的比較全面,轉載收藏之。點擊查看原文(原網址已失效,這是其他站點) 這裡引用的是Jorux的“95%的中國網站需要重寫CSS”的文章,題目有點嚇人,但是確實是現在國內網頁製作方面的一些缺 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...