【发布时间】:2023-03-13 12:46:01
【问题描述】:
使用 jQuery dotdotdot 插件,我希望有一个 More 和 Less 按钮来显示和隐藏 <div> 的全部内容很多文字要显示。 More 按钮工作正常,但我还没有找到将<div> 恢复为原始显示的方法。请注意,这不仅仅是关于如何使用 dotdotdot 来扩展截断的字符串,因为它包含了 Less 按钮重新截断长字符串。
这里是my code:
$(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();
}
}
});
似乎<div> 的锚标记的click 事件处理程序正在被删除,单击更多按钮后我永远无法访问事件处理程序。 p>
找到的解决方案:
$(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();
}
}
});
谢谢各位!
【问题讨论】: