我有这个html结构:
<section>
<div class="v-middle">
<div class="row">
<h5 class="heading">Heading goes here</h5>
</div>
</div>
</section>
我需要添加类&#34; newClass&#34;当 h5 具有 .heading 类时,为 标记。
我尝试了以下但是它没有工作,我不知道为什么:
$('.heading').parent('section').addClass('newClass');
样本
答案 0 :(得分:1)
.parent
查看直接父级,该父级不是section
,而是div
。你想要closest
:
$('.heading').closest('section').addClass('newClass');
答案 1 :(得分:1)
您可以使用closest()
代替parent()
.parent匹配直接父级。 closest
匹配父亲section
检测
$('.heading').closest('section').addClass('newClass');
section {
width:100%;
height: 200px;
}
.newClass {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
<div class="v-middle">
<div class="row">
<h5 class="heading">Heading goes here</h5>
</div>
</div>
</section>
答案 2 :(得分:1)
将父级更改为父级。
$('.heading').parents('section').addClass('newClass');
或
您可以使用
$('.heading').closest('section').addClass('newClass');
答案 3 :(得分:1)
所有发布的答案都遗忘了一件事:
仅当我需要将类“newClass”添加到父段标记 时 h5有.heading class 。
newClass
元素具有<h5>
类时才应用 heading
。
这段代码可以解决问题。
var heading = $('.heading');
if (heading.length && heading.is('h5')) {
heading.closest('section').addClass('newClass');
}
答案 4 :(得分:1)
尝试parent
方法,而不是parentsUntil
方法。有关详情,请参阅jQuery Traversing - Ancestors
$('.heading').parentsUntil('section').addClass('newClass');
<强>演示强>:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
section {
width: 100%;
height: 200px;
}
.newClass {
background: red;
}
</style>
</head>
<body>
<section>
<div class="v-middle">
<div class="row">
<h5 class="heading">Heading goes here</h5>
</div>
</div>
</section>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$('.heading').parentsUntil('section').addClass('newClass');
</script>
</body>
</html>
&#13;
希望它可以帮助你。
答案 5 :(得分:1)
您可以将以下代码用于具有.heading类的特定h5。因为如果这个标题类在其他元素中可用,这将保护您。
$('h5.heading').closest('section').addClass('newClass')