jquery - Jquery在prev中选择孩子不起作用
问题描述
编码:
<article>
<a href="#"><h4>h4 inside anchor</h4></a>
<p>This is a sibling paragraph of that anchor which had h4 in it</p>
</article>
<script>
$('article p').click(function(){
$(this).prev('a h4').css("background-color", "yellow");
});
</script>
当我单击该段落时,我希望 h4 的背景颜色为黄色,但它不起作用。
此外,关于“prev”的 JQuery 文档对 prev 中具有后代的选择器不太清楚(因此第一个含义是它与选择器的常见预期行为没有什么不同):
如果提供了选择器,则仅当它与该选择器匹配时,它才会检索前一个兄弟。
那么有什么问题呢?
解决方案
问题是因为您在prev()
调用中使用了子选择器。在内部,jQuery 使用类似的逻辑is()
来确定兄弟元素是否匹配此选择器,因此它将测试是否a
是a h4
,这绝不会是这种情况。
要解决此问题,请使用prev()
和的组合find()
:
$('article p').click(function() {
$(this).prev('a').find('h4').addClass('highlight');
});
.highlight { background-color: #FF0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<article>
<a href="#">
<h4>h4 inside anchor</h4>
</a>
<p>This is a sibling paragraph of that anchor which had h4 in it</p>
</article>
推荐阅读
- docker - Docker 将图像推送到 Nexus 给出了无效的校验和摘要格式错误
- facebook - 通过 facebook api 阻止用户
- reactjs - 在本机反应中对齐图像以显示顶部
- python - Python / Pygame - 如何创建用于查看世界地图的相机(自上而下,无玩家角色)
- random - 球拍 - 带有随机数字的数字
- prolog - 使用条件切割的 Prolog 查询
- python - 适用于所有环境 Python (Anaconda) 的全局模块安装
- javascript - 为什么从同一个 javascript 文件导入和导出会给出类型而不是函数错误?
- python - 如何更快地堆叠一系列 numpy 数组?
- asp.net-mvc - .NET Core 将多个实体关联到一个用户