首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >展开/折叠文本

展开/折叠文本
EN

Stack Overflow用户
提问于 2013-03-13 06:38:05
回答 4查看 4.9K关注 0票数 0

下面的代码可以很好地处理一个显示/隐藏文本过程

代码语言:javascript
运行
复制
<div class="reveal">Click Here to READ MORE...</div>
<div style="display:none;">

<div class="collapse" style="display:none;">Collapse Text</div>

然而,如果这段代码被重复多次,折叠文本就会显示出来,而不会消失,而且实际上会与展开相冲突,从而显示更多的文本,而不是折叠。

在此http://jsfiddle.net/syEM3/4/中,单击任何单击此处阅读更多...请注意折叠文本如何显示在段落的底部,并且不会消失。单击折叠,它会显示更多文本。

我该如何防止这种情况,并让它正常工作呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-13 06:49:28

这两个slideDown函数调用并不特定于您当前正在执行的.reveal和/或.collapse。即

代码语言:javascript
运行
复制
$(".collapse").slideDown(100);

将在页面上找到类为.collapse的所有元素,并向下滑动它们。不管你刚才点击的是什么元素。

我会将slideDown调用更改为与您刚才单击的元素相关,即如下所示

代码语言:javascript
运行
复制
$('.reveal').click(function() {
    $(this).slideUp(100);
    $(this).next().slideToggle();
    $(this).next().next(".collapse").slideToggle(100);
});
票数 0
EN

Stack Overflow用户

发布于 2013-03-13 06:48:45

在代码中

代码语言:javascript
运行
复制
 $('.reveal').click(function() {
    $(this).slideUp(100);
    $(this).next().slideToggle();
    $(".collapse").slideDown(100);
 });
 $('.collapse').click(function() {
    $(this).slideUp(100);
    $(this).prev().slideToggle();
     $(".reveal").slideDown(100);
 });

这两行并没有执行您想要的操作,因为它们作用于指定类的所有元素

代码语言:javascript
运行
复制
     $(".reveal").slideDown(100);
    $(".collapse").slideDown(100);
票数 0
EN

Stack Overflow用户

发布于 2013-03-13 06:59:13

当您执行$(".collapse").slideDown(100);时,jQuery将在包含.collapse类的所有内容上运行slideDown,而不仅仅是与您当前的this相关的内容。要解决此问题,请参考$(this)的基于其位置的折叠。

这样做,使用像$(this).siblings(".collapse").slideDown(100);这样的东西

请注意,只有在将每个文本块包含在其自己的div中时,此特定选择器才会起作用。每个文本元素都在自己的div中,就像现在一样,使用collapse类选择$(this)的所有同级元素的.siblings(".collapse")仍然会选择这两个collapse元素。

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

https://stackoverflow.com/questions/15373633

复制
相关文章

相似问题

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