當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JQuery .not()用法及代碼示例


用法
.not( selector ) => jQuery

說明:從匹配元素集中移除元素。

  • 添加的版本:1.0.not( selector )

    • selector
      類型:SelectorElementArray
      包含選擇器表達式、DOM 元素或要與集合匹配的元素數組的字符串。
  • 添加的版本:1.4.not( function )

    • function
      類型:Function(Integer 索引,Element 元素)=> Boolean
      用於測試集合中每個元素的函數。它接受兩個參數, index 是元素在 jQuery 集合中的索引, element 是 DOM 元素。在函數中,this 指的是當前的 DOM 元素。
  • 添加的版本:1.4.not( selection )

    • selection
      類型:jQuery
      一個現有的 jQuery 對象來匹配當前的元素集。

給定一個表示一組 DOM 元素的 jQuery 對象,.not() 方法從匹配元素的子集構造一個新的 jQuery 對象。提供的選擇器針對每個元素進行測試;與選擇器不匹配的元素將包含在結果中。

考慮一個帶有簡單列表的頁麵:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
</ul>

我們可以將此方法應用於列表項集:

$( "li" ).not( ":nth-child(2n)" ).css( "background-color", "red" );

此調用的結果是項目 1、3 和 5 的紅色背景,因為它們與選擇器不匹配。

刪除特定元素

.not() 方法的第二個版本允許我們從匹配集中刪除元素,假設我們之前通過其他方式找到了這些元素。例如,假設我們的列表有一個應用於其中一項的 id:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li id="notli">list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
</ul>

我們可以使用原生 JavaScript getElementById() 函數獲取第三個列表項,然後將其從 jQuery 對象中刪除:

$( "li" ).not( document.getElementById( "notli" ) )
  .css( "background-color", "red" );

此語句更改項目 1、2、4 和 5 的顏色。我們可以使用更簡單的 jQuery 表達式來完成相同的事情,但是當其他庫提供對普通 DOM 節點的引用時,這種技術可能很有用。

從 jQuery 1.4 開始,.not() 方法可以像 .filter() 一樣將函數作為其參數。函數返回true 的元素從過濾集中排除;包括所有其他元素。

注意:當一個 CSS 選擇器字符串被傳遞給.not(), 文本和注釋節點將在過濾過程中始終從生成的 jQuery 對象中刪除。當提供特定節點或節點數組時,隻有與過濾數組中的節點之一匹配的文本或注釋節點才會從 jQuery 對象中刪除。

例子:

為非綠色或藍色的 div 添加邊框。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>not demo</title>
  <style>
  div {
    width: 50px;
    height: 50px;
    margin: 10px;
    float: left;
    background: yellow;
    border: 2px solid white;
  }
  .green {
    background: #8f8;
  }
  .gray {
    background: #ccc;
  }
  #blueone {
    background: #99f;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<div></div>
<div id="blueone"></div>
<div></div>
<div class="green"></div>
<div class="green"></div>
<div class="gray"></div>
<div></div>
 
<script>
$( "div" ).not( ".green, #blueone" )
  .css( "border-color", "red" );
</script>
 
</body>
</html>

演示:

從所有段落的集合中刪除 ID 為 "selected" 的元素。

$( "p" ).not( $( "#selected" )[ 0 ] );

從所有段落的集合中刪除 ID 為 "selected" 的元素。

$( "p" ).not( "#selected" );

從所有段落的總集中刪除與“div p.selected”匹配的所有元素。

$( "p" ).not( $( "div p.selected" ) );

相關用法


注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 .not()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。