显示和隐藏项目列表
Showing and hiding a list of items
我正在尝试制作一个页面,您可以在其中点击某项服务,然后会显示其描述。我有点明白了,但与此同时,它离我想要的还很远。
现在,我只有针对所有这些的服务 div,然后是针对描述的 service_description div。我单击的任何服务都会显示所有特定服务的描述。我希望服务描述仅针对单击的服务显示。
我正在使用切换方法。我不确定这是否是最佳选择。页面加载后,一切都在显示,除非单击,否则我不希望显示描述。
这是我的代码:
<script>
$(document).ready(function(){
$(".service").click(function(){
$(".service_description").toggle(1000);
});
});
</script>
<div class="service_list">
<button class="service">Floors</button>
<div class="service_description">dsggafgg</div>
<div class="service">Roofs</div>
<div class="service_description">dsggafgg</div>
<div class="service">Siding</div>
<div class="service_description">dsggafgg</div>
<div class="service">Paint</div>
<div class="service_description">dsggafgg</div>
<div class="service">Kitchen Remodels</div>
<div class="service_description">dsggafgg</div>
</div>
我创建了一个 fiddle,但我不确定如何添加到 Jquery 库中,自从我上次使用它以来它已经改变了。
https://jsfiddle.net/huj2fkra/#&togetherjs=P1EtO37uUE
如何对每项服务进行单选?我真的不想用一堆不同的div制作一个切换脚本,因为如果选择了一个服务,我希望在我点击另一个服务时该描述消失。
有没有人有什么想法?
$(".service").click(function(){
$(this).find(".service_description").toggle(1000);
});
应该可以解决问题
我会将每项服务包装在 div
中,如下所示:
<div class="service-wrapper">
<div class="service-title">Floors</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Roofs</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Siding</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Paint</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Kitchen Remodels</div>
<div class="service-description">...</div>
</div>
然后,你可以这样做 (https://jsfiddle.net/3ofLfa4t/):
$('.service-wrapper').click(function() {
var thisDescription = $('.service-description', $(this));
// Hide all other descriptions
$('.service-description').not(thisDescription).hide();
// Toggle (show or hide) this description
thisDescription.toggle();
});
$('.service-description', $(this))
调用只是告诉 jQuery 仅查找被单击的包装内的 .service-description
元素,忽略包装外的元素。
可以使用slideUp、slideDown:
$(document).ready(function () {
$(".service_list .service_description").hide();
$(".service").click(function(){
$(this).next(".service_description").siblings('.service_description').slideUp(1000);
if ($(this).next(".service_description").is(":visible")) {
$(this).next(".service_description").slideUp(1000);
}else{
$(this).next(".service_description").slideDown(1000);
}
});
});
我正在尝试制作一个页面,您可以在其中点击某项服务,然后会显示其描述。我有点明白了,但与此同时,它离我想要的还很远。
现在,我只有针对所有这些的服务 div,然后是针对描述的 service_description div。我单击的任何服务都会显示所有特定服务的描述。我希望服务描述仅针对单击的服务显示。
我正在使用切换方法。我不确定这是否是最佳选择。页面加载后,一切都在显示,除非单击,否则我不希望显示描述。
这是我的代码:
<script>
$(document).ready(function(){
$(".service").click(function(){
$(".service_description").toggle(1000);
});
});
</script>
<div class="service_list">
<button class="service">Floors</button>
<div class="service_description">dsggafgg</div>
<div class="service">Roofs</div>
<div class="service_description">dsggafgg</div>
<div class="service">Siding</div>
<div class="service_description">dsggafgg</div>
<div class="service">Paint</div>
<div class="service_description">dsggafgg</div>
<div class="service">Kitchen Remodels</div>
<div class="service_description">dsggafgg</div>
</div>
我创建了一个 fiddle,但我不确定如何添加到 Jquery 库中,自从我上次使用它以来它已经改变了。
https://jsfiddle.net/huj2fkra/#&togetherjs=P1EtO37uUE
如何对每项服务进行单选?我真的不想用一堆不同的div制作一个切换脚本,因为如果选择了一个服务,我希望在我点击另一个服务时该描述消失。
有没有人有什么想法?
$(".service").click(function(){
$(this).find(".service_description").toggle(1000);
});
应该可以解决问题
我会将每项服务包装在 div
中,如下所示:
<div class="service-wrapper">
<div class="service-title">Floors</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Roofs</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Siding</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Paint</div>
<div class="service-description">...</div>
</div>
<div class="service-wrapper">
<div class="service-title">Kitchen Remodels</div>
<div class="service-description">...</div>
</div>
然后,你可以这样做 (https://jsfiddle.net/3ofLfa4t/):
$('.service-wrapper').click(function() {
var thisDescription = $('.service-description', $(this));
// Hide all other descriptions
$('.service-description').not(thisDescription).hide();
// Toggle (show or hide) this description
thisDescription.toggle();
});
$('.service-description', $(this))
调用只是告诉 jQuery 仅查找被单击的包装内的 .service-description
元素,忽略包装外的元素。
可以使用slideUp、slideDown:
$(document).ready(function () {
$(".service_list .service_description").hide();
$(".service").click(function(){
$(this).next(".service_description").siblings('.service_description').slideUp(1000);
if ($(this).next(".service_description").is(":visible")) {
$(this).next(".service_description").slideUp(1000);
}else{
$(this).next(".service_description").slideDown(1000);
}
});
});