4

有没有人想出如何在显示一些文本(比如 100 个字符)的地方使用twitter bootstrap collapse 插件,然后单击按钮展开文本以显示其余部分?

这是一个 JSFiddle,它演示了我遇到的以下问题

  1. 隐藏的文本显示在行上。如果句子不会在视觉上受到干扰,那就更好了。
  2. 指示器的icon-plus-sign显示未切换(在显示隐藏文本时不会消失,反之亦然)。

完全工作的 HTML:

<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/js/bootstrap.min.js"></script>

<div class="" data-toggle="collapse" data-target="#div1" >
     <span><b>Div1:</b> This is a sentence at the end of the first 100 characters that gets truncated </span>
 <i class='icon-plus-sign'></i> 
</div>
<div id="div1" class="collapse" >such that characters 101 to infinity are not shown inline with the beginning of the sentence (<b>Div1</b>).</div>

<div class="" data-toggle="collapse" data-target="#div2" >
 <span><b>Div2:</b>This is a sentence at the end of the first 100 characters that gets truncated </span>
 <i class='icon-plus-sign'></i> 
</div>
<div id="div2" class="collapse" >such that characters 101 to infinity are not shown inline with the beginning of the sentence (<b>Div2</b>).</div>
4

2 回答 2

7

我通过添加以下 JavaScript 使其工作:

$("div").on("hide", function() {
    $(this).prev("div").find("i").attr("class","icon-plus-sign");
    $(this).css("display","");
    $(this).css("height","5px");
});
$("div").on("show", function() {
    $(this).prev("div").find("i").attr("class","icon-minus-sign");
    $(this).css("display","inline");
    $(this).css("height","5px");
});

以及以下 CSS:

div[data-toggle="collapse"] {
    float: left;
}

小提琴示例在这里

边注

我个人不会为此使用 Bootstrap 折叠插件。我会结合使用像JQuery Expander这样的专用插件和 Bootstrap 图标。

一个不同的例子小提琴是here

于 2013-02-18T21:48:23.827 回答
6

我同意另一篇文章,即折叠插件不适用于此。实际上很容易编写一些可以很好地处理这个问题的东西。例如,通过将隐藏文本包装在<span class="truncated">

<p>
 This is the visible part <span class="truncated">this is the hidden part.</span>
</p>

然后隐藏它,附加隐藏/显示图标,并切换状态:

$('.truncated').hide()                       // Hide the text initially
    .after('<i class="icon-plus-sign"></i>') // Create toggle button
    .next().on('click', function(){          // Attach behavior
    $(this).toggleClass('icon-minus-sign')   // Swap the icon
        .prev().toggle();                    // Hide/show the text
});

这利用了icon-minus-sign类的优先级icon-plus-sign,但如果它让你感觉更安全,你可以为两者添加一个切换。

演示:http: //jsfiddle.net/VNdmZ/4/

于 2013-02-18T22:04:13.970 回答