我正在使用active手风琴选项卡,我想在‘. .elementor-active’选项卡标题中添加类.siblings(),但是当我尝试添加active类时,它被添加到all‘..elementor tab-title’,我也使用了.siblings()和children(),但是仍然没有人能指出正确的方向。
(function($) {
var allPanels = $('.elementor-accordion-item > .elementor-tab-content').hide();
$('.elementor-accordion-item > .elementor-tab-title > a').click(function() {
allPanels.slideUp();
$('.elementor-accordion-item > .elementor-tab-title').addClass('elementor-active').closest().find('.elementor-active').removeClass('elementor-active');
$(this).parent().next().slideDown();
return false;
});
})(jQuery);.elementor-accordion {
margin: 50px;
}
.elementor-accordion .elementor-tab-title,
.elementor-accordion .elementor-tab-content {
padding: 10px;
border: 1px solid black;
border-bottom: 0;
}
.elementor-accordion .elementor-tab-title:last-of-type,
.elementor-accordion .elementor-tab-content:last-of-type {
border-bottom: 1px solid black;
}
.elementor-accordion .elementor-tab-title a,
.elementor-accordion .elementor-tab-content a {
display: block;
color: black;
font-weight: bold;
}
.elementor-accordion .elementor-tab-content {
border-top: 0;
font-size: 12px;
}
.elementor-accordion .elementor-tab-content:last-of-type {
border-top: 1px solid white;
position: relative;
top: -1px;
}
a {
text-decoration: none;
}
body {
font: 16px Sans-Serif;
}
.elementor-tab-title.elementor-active {
background: red;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="elementor-accordion">
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 1</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 2</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 3</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
</div>
发布于 2020-02-12 06:41:59
这里有一些变化
只需在添加类$('.elementor-tab-title').removeClass('elementor-active');之前删除
并将类添加到目标元素$(this).parent().addClass('elementor-active');中
编辑:
如果您想要切换,那么可以使用$(this).parent().hasClass('elementor-active')检查If元素是否有类,并按下面的方式执行操作。
(function($) {
var allPanels = $('.elementor-accordion-item > .elementor-tab-content').hide();
$('.elementor-accordion-item > .elementor-tab-title > a').click(function() {
//allPanels.slideUp();
if($(this).parent().hasClass('elementor-active')){
$(this).parent().removeClass('elementor-active').next().slideUp();
} else {
$(this).parent().addClass('elementor-active').next().slideDown();
}
return false;
});
})(jQuery);.elementor-accordion {
margin: 50px;
}
.elementor-accordion .elementor-tab-title,
.elementor-accordion .elementor-tab-content {
padding: 10px;
border: 1px solid black;
border-bottom: 0;
}
.elementor-accordion .elementor-tab-title:last-of-type,
.elementor-accordion .elementor-tab-content:last-of-type {
border-bottom: 1px solid black;
}
.elementor-accordion .elementor-tab-title a,
.elementor-accordion .elementor-tab-content a {
display: block;
color: black;
font-weight: bold;
}
.elementor-accordion .elementor-tab-content {
border-top: 0;
font-size: 12px;
}
.elementor-accordion .elementor-tab-content:last-of-type {
border-top: 1px solid white;
position: relative;
top: -1px;
}
a {
text-decoration: none;
}
body {
font: 16px Sans-Serif;
}
.elementor-tab-title.elementor-active {
background: red;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="elementor-accordion">
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 1</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 2</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 3</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
</div>
发布于 2020-02-12 07:09:25
您可以使用$(this)而不是使用类获取元素。您需要了解this关键字如何在JavaScript中工作。
(function ($) {
var allPanels = $('.elementor-accordion-item > .elementor-tab-content').hide();
$('.elementor-accordion-item > .elementor-tab-title > a').click(function () {
if (!$(this).parent().hasClass('elementor-active')) {
allPanels.slideUp();
allPanels.prevObject.find('.elementor-active').removeClass('elementor-active');
$(this).parent().addClass('elementor-active')
$(this).parent().next().slideDown();
}
else {
allPanels.slideUp();
allPanels.prevObject.find('.elementor-active').removeClass('elementor-active');
}
return false;
});
})(jQuery);.elementor-accordion {
margin: 50px;
}
.elementor-accordion .elementor-tab-title,
.elementor-accordion .elementor-tab-content {
padding: 10px;
border: 1px solid black;
border-bottom: 0;
}
.elementor-accordion .elementor-tab-title:last-of-type,
.elementor-accordion .elementor-tab-content:last-of-type {
border-bottom: 1px solid black;
}
.elementor-accordion .elementor-tab-title a,
.elementor-accordion .elementor-tab-content a {
display: block;
color: black;
font-weight: bold;
}
.elementor-accordion .elementor-tab-content {
border-top: 0;
font-size: 12px;
}
.elementor-accordion .elementor-tab-content:last-of-type {
border-top: 1px solid white;
position: relative;
top: -1px;
}
a {
text-decoration: none;
}
body {
font: 16px Sans-Serif;
}
.elementor-tab-title.elementor-active {
background: red;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="elementor-accordion">
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 1</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 2</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 3</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
</div>
发布于 2020-02-12 06:43:56
这可能就是你要找的。为了清晰起见,我分离了add和remove类。
(function($) {
var allPanels = $('.elementor-accordion-item > .elementor-tab-content').hide();
$('.elementor-accordion-item > .elementor-tab-title > a').click(function() {
allPanels.slideUp();
$('.elementor-accordion-item > .elementor-tab-title').removeClass('elementor-active');
$(this).parent().addClass('elementor-active');
$(this).parent().next().slideDown();
return false;
});
})(jQuery);.elementor-accordion {
margin: 50px;
}
.elementor-accordion .elementor-tab-title,
.elementor-accordion .elementor-tab-content {
padding: 10px;
border: 1px solid black;
border-bottom: 0;
}
.elementor-accordion .elementor-tab-title:last-of-type,
.elementor-accordion .elementor-tab-content:last-of-type {
border-bottom: 1px solid black;
}
.elementor-accordion .elementor-tab-title a,
.elementor-accordion .elementor-tab-content a {
display: block;
color: black;
font-weight: bold;
}
.elementor-accordion .elementor-tab-content {
border-top: 0;
font-size: 12px;
}
.elementor-accordion .elementor-tab-content:last-of-type {
border-top: 1px solid white;
position: relative;
top: -1px;
}
a {
text-decoration: none;
}
body {
font: 16px Sans-Serif;
}
.elementor-tab-title.elementor-active {
background: red;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="elementor-accordion">
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 1</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 2</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
<div class="elementor-accordion-item">
<div class="elementor-tab-title"><a href="">Panel 3</a></div>
<div class="elementor-tab-content">Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</div>
</div>
</div>
https://stackoverflow.com/questions/60182458
复制相似问题