显示更多 jquery 以使用两个 div

Posted

技术标签:

【中文标题】显示更多 jquery 以使用两个 div【英文标题】:Show more jquery to work with two divs 【发布时间】:2016-01-07 13:15:29 【问题描述】:

我找到了以下“显示更多”功能的解决方案,效果很好。我需要增强它以使两个 div 同时展开/隐藏。

How to create a "show more" button and specify how many lines of text can be initially shown

以下是我更新后的代码,由于某种原因无法正常工作。

$(".show-more span").click( function() 
    var $this = $(this);
    var $content = $this.parent().prev("div.contentNav");
    var $contentDesc = $this.parent().prev("div.contentDesc");

    var linkText = $this.text().toUpperCase();

    if(linkText === "(SHOW LESS)")
        linkText = "more...";
        $content.switchClass("showContent", "hideContent", 200);
        $contentDesc.switchClass("showContent", "hideContent", 200);

     else 
        linkText = "(Show less)";
        $content.switchClass("hideContent", "showContent", 200);
        $contentDesc.switchClass("hideContent", "showContent", 200);
    
    $this.text(linkText);
);

谢谢。

【问题讨论】:

如果另一个div有相同的类名,改变var $this = $(this);到 $('.show-more span');这将显示/隐藏所有而不是这个上下文 @Syahrul,感谢您的意见;我替换了“var $this = $(this);”用“var $this = $('.show-more span');”但这没有用。 【参考方案1】:

您的var $contentDesc = $this.prev("div.contentDesc"); 更改为var $contentDesc = $content.prev("div.contentDesc");

演示

$(function() 
  $(".show-more span").click( function() 
    var $this = $(this);
    var $content = $this.parent().prev("div.contentNav");
    var $contentDesc = $content.prev("div.contentDesc");
    var linkText = $this.text().toUpperCase();

    if(linkText === "(SHOW LESS)") 
        linkText = "more...";
        $content.switchClass("showContent", "hideContent", 200);
        $contentDesc.switchClass("showContent", "hideContent", 200);

     else 
        linkText = "(Show less)";
        $content.switchClass("hideContent", "showContent", 200);
        $contentDesc.switchClass("hideContent", "showContent", 200);
    
    $this.text(linkText);
);
  );
.hideContent 
    overflow: hidden;
    line-height: 1em;
    height: 2em;

.showContent
    height: auto;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.8.18/jquery-ui.min.js"></script>

<div class="contentDesc hideContent"> 
		<p>Description</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor repudiandae non sit incidunt totam, error optio animi possimus saepe quidem voluptate molestias neque excepturi hic. Omnis, pariatur, aliquid. Facere, alias!</p>
</div>
<div class="contentNav hideContent"> 
	<p>Navigation content</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolor repudiandae non sit incidunt totam, error optio animi possimus saepe quidem voluptate molestias neque excepturi hic. Omnis, pariatur, aliquid. Facere, alias!</p>
</div>
<div class="show-more" style="text-align: center; text-align: center; cursor: pointer;"><span>more...</span> </div>

【讨论】:

【参考方案2】:

您的代码无法正常工作,因为它找不到第二个 div,因此请检查您的代码。要修复它,var $contentDesc = $this.parent().prev("div.content").prev();.

【讨论】:

@Blaze 我只是编辑帖子,解决方案所有者是 Hashy ;-) @Hashy - 我试过你的建议,但没有奏效。这是我正在使用的 html。 [代码] 描述..... 导航内容 more... [code] @Blaze k,然后根据您的代码,您可以输入 $contentDesc = $content.prev();这也行

以上是关于显示更多 jquery 以使用两个 div的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Slide Down 用 slice 显示更多

jQuery 显示带有更多和更少链接的第一个 X 元素

显示数据库表中的两个字段以填充 jquery 自动完成

调试 jQuery 插件以在两个相等的列中显示动态列表

JQuery如何实现点击查看更多,显示更多内容

如何使用jQuery在三个或更多条件下显示和隐藏元素?