隐藏/显示从段落中间开始的内容

时间:2015-12-07 作者:blendergasket

我需要能够隐藏/显示基于用户单击链接的任意内容(段落、列表,可能是图片)。这很容易,但我在试图将其添加到段落中间时遇到了很多问题。

我们正在尝试在页面的某些部分提供“阅读更多”类型的链接。它需要能够从文本段落的任何地方开始。我用一个<span> 标记,但这会导致问题,因为要隐藏的内容范围可能必须包含多个段落、列表等,因此WordPress在第一段末尾关闭范围,以使其成为有效的HTML,这很有意义。

接下来,我尝试添加<div> 标记,然后在我的样式表中内联div,但WordPress在我添加div文本之前关闭了该段落,这也是有效的HTML。

有人对如何做到这一点有什么建议吗?我不想删除WordPress自然添加的<p> 标记,因为我预计将更新站点的人不会希望进入代码视图并添加段落标记。

我使用的HTML是:

<strong>What is community acupuncture?</strong> Here is the text that will show 
before the hidden section<div class="hidden-text"> Here is the rest of the paragraph 
in the hidden section.</p>

<p>Here is another paragraph of text that needs to be hidden. I realize that it is 
not valid HTML to have a div tag start in the middle of one paragraph and then encase 
a couple more paragraphs or a list or whathaveyou, which is why I am wondering how 
anyone else handled this issue.</p></div>
我将此作为我的css:

.hidden-text {
    display: inline;
}
到目前为止,我的小jquery如下所示:

$(\'.hidden-text\').before("...").hide().after("<a href=\'#\' class=\'hidden-text-toggle\'>Read More</a>");
我不确定我在这里发布这个是否更好,因为这个问题与<p> 正在添加标签,或者最好将其发布在网站的前端设计部分。

1 个回复
SO网友:cjbj

您尝试执行的操作的问题是分割了一个块类型的html元素<p>. 在您的示例中,您有效地<p><div></p></div>, 这根本不好。所以你不能混在一起<p><div> 以这种方式。但是,您可以使用段落和类的组合:

<p>Text</p><p class="hide-from-here">More text</p>
可以方便地进行扩展</p><p class="hide-from-here"> 来自短代码。您还可以使用相同的短代码生成链接。您可以确保段落带有hide-from-here 类的行为就像使用css时它不存在一样。

现在您仍然需要隐藏其余段落。这里是jquery.nextAll 可以方便地为类中的所有剩余段落提供

$("p:hide-from-here").nextAll().addClass( "following-paragraphs" );
在此类上定义display:hidden, 使用链接切换(或删除类)。

相关推荐

JqueryUi对话框给出未捕获的TypeError:This._addClass不是函数错误

我有一个网站,我们需要一些自定义php编码来连接到外部数据库,以获取几个销售我们产品的供应商的产品评论URL。我们试图实现的基本想法是让用户注册他们的产品,然后如果他们愿意留下评论,就延长保修期。我正在使用XYZScript。com的“插入PHP”插件来实现这一点。该主题最初只加载了jQuery,以避免创建子主题,我们正在php脚本中加载jQueryUI。因此,我们将jQuery加载到文档的标题中,将jQueryUI加载到文档的正文中。我不太确定这是因为加载脚本的顺序造成的,还是其他一些冲突的javasc