Используя плагин jQuery dotdotdot, я хотел бы иметь как Подробнее, так и Меньше, чтобы показать и скрыть весь контент <div>
, когда есть много текста для отображения. Кнопка Больше работает нормально, но я еще не понял способ вернуть <div>
к ее оригинальному дисплею. Обратите внимание, что речь идет не только о том, как использовать dotdotdot для расширения усеченной строки, потому что она включает кнопку "Меньше", переустанавливая длинную строку.
Вот мой код:
$(function() {
$("div.ellipsis-text").dotdotdot({
after: 'a.more',
callback: dotdotdotCallback
});
$("div.ellipsis-text").find("a").click(function() {
if ($(this).text() == "More") {
var div = $(this).closest('div.ellipsis-text');
div.trigger('destroy').find('a.more').hide();
div.css('max-height', '');
$("a.less", div).show();
}
else {
$(this).text("More");
$(this).closest('div.ellipsis-text').css("max-height", "50px").dotdotdot({ after: "a", callback: dotdotdotCallback });
}
});
function dotdotdotCallback(isTruncated, originalContent) {
if (!isTruncated) {
$("a", this).remove();
}
}
});
Похоже, что обработчик событий click
для тегов привязки <div>
удаляется, я никогда не могу получить обработчик события после нажатия кнопки Больше.
найденное решение:
$(function() {
$("div.ellipsis-text").dotdotdot({
after: 'a.more',
callback: dotdotdotCallback
});
$("div.ellipsis-text").on('click','a',function() {
if ($(this).text() == "More") {
var div = $(this).closest('div.ellipsis-text');
div.trigger('destroy').find('a.more').hide();
div.css('max-height', '');
$("a.less", div).show();
}
else {
$(this).hide();
$(this).closest('div.ellipsis-text').css("max-height", "50px").dotdotdot({ after: "a.more", callback: dotdotdotCallback });
}
});
function dotdotdotCallback(isTruncated, originalContent) {
if (!isTruncated) {
$("a", this).remove();
}
}
});
Спасибо, ребята!