当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。