Попробуйте использовать это как отправную точку.
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas massa lectus, pulvinar vel scelerisque eget,
rutrum et nisi. Mauris semper viverra lorem sit amet faucibus. Fusce egestas metus sit amet lectus interdum
sollicitudin. Maecenas accumsan metus scelerisque tortor lobortis et pretium nibh cursus.
</p>
<script type="text/javascript">
$(function() {
var textToHide = $('p').text().substring(100);
var visibleText = $('p').text().substring(1, 100);
$('p')
.html(visibleText + ('<span>' + textToHide + '</span>'))
.append('<a id="read-more" title="Read More" style="display: block; cursor: pointer;">Read More…</a>')
.click(function() {
$(this).find('span').toggle();
$(this).find('a:last').hide();
});
$('p span').hide();
});
</script>
Итак, я создал две переменные: одну для хранения первых 100 символов («visibleText») и одну для остальных («textToHide»).
Затем мы сообщаем jQuery найти каждый тег абзаца (вы, вероятно, захотите определить более конкретный селектор), оберните текст в тег span и поместите все это обратно в видимый текст, добавив ссылку в конце все это, чтобы показать текст, который мы будем скрывать, и, наконец, назначить событие click, чтобы сделать это.
Функция click просто ищет все теги span в абзаце, переключает их видимыми (на самом деле функция show()
здесь может быть лучше), а затем скрывает ссылку «Подробнее».
Наконец, мы уверены, что теги span нашего абзаца начинают скрываться. Возможно, вы захотите создать правило CSS (p span {display: none;}
), чтобы текст по-прежнему начинался скрытно, но выполнялся быстрее, чем JavaScript. Функция jQuery show()
все равно будет переопределять это правило css при вызове.
Это должно сделать это.