Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示div的单个句子_Php_Javascript_Css - Fatal编程技术网

Php 显示div的单个句子

Php 显示div的单个句子,php,javascript,css,Php,Javascript,Css,我想显示一个div的第一行,末尾显示“…”,然后单击显示整个块删除“…”。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本 有没有一种简单的方法可以通过javascript实现这一点?我使用jQuery。我通常使用的方法是在HTML中将文本的两个版本(短文本和长文本)相邻放置。一个是隐藏的(较长的),当您单击它时,您的jQuery可以在这两个元素之间进行交换 您可以使用PHP的函数来准备字符串 echo substr("This is a long line of text",0,9)

我想显示一个div的第一行,末尾显示“…”,然后单击显示整个块删除“…”。另外,我想知道如何在第二次单击时将其切换回紧凑的单线版本


有没有一种简单的方法可以通过javascript实现这一点?我使用jQuery。

我通常使用的方法是在HTML中将文本的两个版本(短文本和长文本)相邻放置。一个是隐藏的(较长的),当您单击它时,您的jQuery可以在这两个元素之间进行交换

您可以使用PHP的函数来准备字符串

echo substr("This is a long line of text",0,9) . '...';

// This is a...
假设你没有任何缩写的标题,那就把课文缩短到第一句

jQuery也很简单

<script>
$(document).ready(function(){
    $('#toggle').hide();
    $('.toggle').click(function(){
        $('#toggle').toggle();
    });
});
</script>
<?php echo $shorten; ?>
<br /><a href="#" class="toggle">read more</a>
<div id="toggle"><?php echo $string; ?></div>

$(文档).ready(函数(){
$(“#切换”).hide();
$('.toggle')。单击(函数(){
$('#toggle')。toggle();
});
});


可能不是最优雅的解决方案,但应该可以

div span { display:none; }
div b { font-weight:normal; }

<div>Blah blah blah blah<b>...</b> <span>blah blah blah blah blah</span></div>


jQuery("div").toggle(function() {
        $(this).find("b").hide();
        $(this).find("span").show();
  },
  function() {
        $(this).find("b").show();
        $(this).find("span").hide();
  }).
div span{display:none;}
div b{字体大小:正常;}
废话废话废话。。。废话废话废话
jQuery(“div”).toggle(函数(){
$(this.find(“b”).hide();
$(this.find(“span”).show();
},
函数(){
$(this.find(“b”).show();
$(this.find(“span”).hide();
}).

三重点称为省略号。有了这些信息,您可以轻松地运行搜索来查找jQuery elipsis插件,有很多可供选择的插件。。。我不相信它能保证一个插件…@Lix,不完全如此。如果您想要一个在表示中看起来不错的方法,那么必须使用substr()以外的其他方法。一旦达到极限,它就会切断语言。你必须提前知道你要截断的句子,并计算字符数,这样它就不会截断任何单词。只使用
substr()
会在逻辑上留下一些漏洞-我同意你的看法。。。但是有一些简单的事情可以防止这种情况的发生——用空格(单词)分隔句子将防止将一个单词一分为二-如果有太多的字符,那么你就去掉另一个单词并重新计算。我唯一的观点是,并不总是需要在一个web应用程序中塞满简单的插件,这些插件可以很容易地在内部开发,以实现更个性化和更健壮。谢谢你的快速响应Lix。但按字符数截断句子的问题是,有时文本显示为两个句子。还有别的解决办法吗?@sav你能解释一下你说的两句话是什么意思吗?如果你是两句话,仍然会有一个简短的版本,当你改变文本时,会显示较长的两句话。。。我遗漏了什么吗?但是我的主要目的不是显示div的第一句话。我的目的是显示div的第一行。谢谢你的回答Marcus。但按字符数截断句子的问题是,有时文本显示为两行。还有其他的解决办法吗?我只截取周期的第一个实例。如果第一句话中有多行,我只能假设文本中有中断。在这种情况下,您可以说
$shorten=substr(strip_tags($string),0,strpos(strip_tags($string),'.')
div span { display:none; }
div b { font-weight:normal; }

<div>Blah blah blah blah<b>...</b> <span>blah blah blah blah blah</span></div>


jQuery("div").toggle(function() {
        $(this).find("b").hide();
        $(this).find("span").show();
  },
  function() {
        $(this).find("b").show();
        $(this).find("span").hide();
  }).