首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery `.find()`找不到“与此选择器匹配”的元素

jQuery `.find()`找不到“与此选择器匹配”的元素
EN

Stack Overflow用户
提问于 2019-05-16 02:57:41
回答 1查看 222关注 0票数 0

find函数的jQuery文档中,它声明

将通过测试元素是否与此选择器匹配来筛选元素

但这似乎并不严格准确,或者我对这句话的意思做出了错误的假设。如果这是正确的,我希望下面的代码会使我的p元素的背景变为绿色,但实际上却是红色的。

代码语言:javascript
复制
$('#banner-message').find('p').css('background-color', 'red');

document.getElementById('banner-message').querySelectorAll('#parent p')[0].style.backgroundColor = 'blue'; // but this works?

// $('#parent #banner-message').find('p').css('background-color', 'green'); // does what's expected
$('#banner-message').find('#parent p').css('background-color', 'green');
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent">
  <div id="banner-message">
    <p>Hello World</p>
  </div>
</div>

显然,p元素与我给它的选择器相匹配,但看起来好像原始元素是选择器的前缀,文档中并没有说明这一点。

那么这是jQuery的一个bug吗?或者,我对.find()应该如何工作的解释是错误的?

EN

回答 1

Stack Overflow用户

发布于 2019-05-16 03:08:50

.find()从当前选定的元素中查找子项。在伪代码中,你会说:

找到ID为banner-message的元素,然后搜索ID为parent的子元素,然后再次搜索p元素,将背景颜色更改为绿色

如果您想要从父元素中查找元素,那么您不能从$('#banner-message')调用它,但是可以使用$('#parent').find('p').css('background-color', 'green');

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56156003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档