Сократить текст и показать весь при нажатии

A4
На сайте с 07.03.2013
Offline
0
1897

Добрый день!

Нужна помощь в реализации такой идеи:

есть вывод статей с БД через foreach:


...
foreach ($posts as $item){
echo "<p>".$item["post"]."</p>";
echo "<b>Раздел: </b>".$Article->readPostSection($item["section"])."<br>";
echo "<b>Автор: </b>".$Article->readPostAuthor($item["author"])."<br>";
echo "<b>Дата создания: </b>".date('H:i:s d/M/Y',$item["time"])."<br><hr><br>";
}
...

надо обрезать выводимый текст $item["post"] например до 100-го символа и чтоб появлялась ссылка "Показать всё"

при нажатии на неё, текст разворачивался.

тут на форуме я нашёл нечто похожее:


<div class="fulltext">
<a href="/ssilka.html">Анатолий Васильев</a>, <a href="/ssilka.html">Андрей Власенко</a>, <a href="/ssilka.html">Виктория Герасимова</a>, <a href="/ssilka.html">Дарья Повереннова</a>, <a href="/ssilka.html">Захар Ронжин</a>, <a href="/ssilka.html">Илья Соколовский</a>, <a href="/ssilka.html">Николай Сердцев</a>, <a href="/ssilka.html">Раиса Рязанова</a>, <a href="/ssilka.html">Татьяна Гуляева</a>, <a href="/ssilka.html">Ярослав Бойко</a>
</div>
<div>Some content</div>

<script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
<script>
$(document).ready(function() {
(function() {
var max_len = 100;
$('.fulltext').each(function() {
var div = $(this);
var fullhtml = div.html();
if (div.text().length > max_len) {
div.html('<div class="shorttext">' + fullhtml + '</div><div><a class="more" href="#">Далее &rarr;</a></div>');
}
div.find('.more').on('click', function() {
var a = $(this);
a.closest('.fulltext').html(fullhtml);
return false;
});
});
})();
});
</script>

но это не сработало почему то. все статьи на странице стали одинаковыми и при нажатии на ссылку "далее" разворачивались все вместе.

помогите подправить js плиз :)

VHS-1980
На сайте с 21.05.2010
Offline
91
#1
var max_len = 100;
$('.fulltext').each(function() {
var div = $(this);
var fullhtml = div.html();
if (div.text().length > max_len) {
div.html('<div class="shorttext">' + fullhtml.substr(0, max_len) + '</div><div><a class="more" href="#">Далее &rarr;</a></div>');
}
div.find('.more').on('click', function() {
var a = $(this);
a.closest('.fulltext').html(fullhtml);
return false;
});
});

как то так

и немаловажно еще повырезать теги в подсчете длины короткого текста, иначе будет ссылки незакрытыми оставлять и т.п.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий