js中的find(),filter(),has()的用法和区别

filter():操作当前元素集,删除不匹配的元素,得到一个新的集合

<ul>
  <li class="a">list item 1</li>
  <li>list item 2
    <ul>
      <li><div><span>a</span></div>list item 2-a</li>
      <li>list item 2-b</li>
    </ul>
  </li>
  <li>list item 3</li>
  <li>list item 4</li>
</ul>


<script>
$('li').filter('.a').css('background-color', 'red');
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

作用于自身元素

filter()方法与has()方法中的参数,都是过滤条件。不同的是filter()方法,条件作用于自身;has()方法条件是作用于它的后代元素中。


has():以has参数中的选择器或者DOM元素作为条件,检测原结果集中的元素是否符合,去掉不符合的元素,将符合的元素构成一个新结果集

-has(selector选择器或DOM元素) 将匹配元素集合根据选择器或DOM元素为条件,检索该条件在每个元素的后代中是否存在,将符合条件的的元素构成新的结果集。

<ul>
  <li>list item 1</li>
  <li>list item 2
    <ul>
      <li><div><span>a</span></div>list item 2-a</li>
      <li>list item 2-b</li>
    </ul>
  </li>
  <li>list item 3</li>
  <li>list item 4</li>
</ul>
<script>
$('li').has('span').css('background-color', 'red');
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

作用于自身元素

find():在当前选中元素的上下文中寻找符合条件的后代,返回的是子元素

<ul>
  <li>list item 1</li>
  <li>list item 2
    <ul>
      <li><div><span>a</span></div>list item 2-a</li>
      <li>list item 2-b</li>
    </ul>
  </li>
  <li>list item 3</li>
  <li>list item 4</li>
</ul>
<script>
$('li').find('span').css('background-color', 'red');
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

作用于选中元素 

注意:find()的参数可以为用于查找的表达式。

代码:

<div id="test">
    <div id="div1">第一行</div>

    <div id="div2">
        <p id="p1">第1行</p>
        <p id="p2">第2行</p>
        <p id="p3">第3行</p>
    </div>

    <div id="div3">第三行</div>
    <div id="div4">第四行</div>
</div>
 
如果想让第2行这几个字的颜色改变,那么我们就可以用jquery的如下代码实现:
$("#test").find('div[id^="div2"]').find('p[id^="p2"]').css("color","red");

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript ,`find` 是数组的方法之一,用于查找数组符合指定条件的第一个元素并返回该元素。`find` 方法接受一个回调函数作为参数,该回调函数用于定义查找的条件。 下面是 `find` 方法的基本语法: ```javascript array.find(callback(element[, index[, array]])[, thisArg]) ``` - `callback` 是一个回调函数,它接受三个参数: - `element`:当前正在被遍历的元素。 - `index`(可选):当前正在被遍历的元素的索引。 - `array`(可选):调用 `find` 方法的数组本身。 - `thisArg`(可选):在执行回调函数时,用作 `this` 的值。 下面是一个使用 `find` 方法的示例: ```javascript const numbers = [1, 2, 3, 4, 5]; const foundNumber = numbers.find((element) => { return element > 3; }); console.log(foundNumber); // 输出: 4 ``` 在上面的示例,我们调用 `find` 方法来查找数组 `numbers` 第一个大于 3 的元素。回调函数 `(element) => element > 3` 定义了查找的条件。`find` 方法返回了数组符合条件的第一个元素,即 `4`。 需要注意的是,如果没有找到符合条件的元素,`find` 方法将返回 `undefined`。 你也可以使用箭头函数以外的其他方式定义回调函数,例如使用普通函数或函数表达式。 ```javascript const numbers = [1, 2, 3, 4, 5]; function isEven(element) { return element % 2 === 0; } const foundNumber = numbers.find(isEven); console.log(foundNumber); // 输出: 2 ``` 在上面的示例,我们定义了一个名为 `isEven` 的普通函数,并将其作为回调函数传递给 `find` 方法。`find` 方法找到数组第一个满足 `isEven` 函数条件的元素,即 `2`。 通过使用 `find` 方法,你可以轻松地在数组查找符合特定条件的元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值