【发布时间】:2020-10-11 08:38:28
【问题描述】:
我有一个网站,在页面加载时会显示来自用户的大量故事。我只想显示每个故事的前 2 个句子,并带有一个显示更多链接,用户可以按下该链接。我试图合并这个问题link的接受答案中的代码。
前 2 行被隐藏,显示如我所愿,但我无法将 jQuery 附加到链接以触发并显示所有行。是选择器错误吗?
我的小提琴:link
Html(由窗口加载时的 Ajax 调用生成):
<div class="post">
<div class="hideContent">
<div class="post-text">
Lorem ipsum dolor sit amet, ex mel graece iuvaret. Ius cu cetero nonumes complectitur, no clita accusam splendide pri. Ea sit tale democritum, ea meis rebum est..</div>
<div class="post-action">
<input type="button" value="Like" id="like_86_cmpq0" class="like">
<span class="likesTotal" id="likes_86_cmpq0">0</span></div>
</div>
<div class="showMore"><a href="#">Show more</a></div>
</div>
CSS:
.hideContent {
overflow: hidden;
line-height: 1em;
height: 2em;
}
.showContent {
line-height: 1em;
height: auto;
}
JQuery:
$(".showMore a").on("click", function() {
var $this = $(this);
//var $content = $this.parent().prev("div.content");
var $content = $this.closest("hideContent");
var linkText = $this.text().toUpperCase();
if(linkText === "SHOW MORE"){
linkText = "Show less";
$content.switchClass("hideContent", "showContent", 400);
} else {
linkText = "Show more";
$content.switchClass("showContent", "hideContent", 400);
}
$this.text(linkText);
});
编辑:
创建上述 html 的 JQuery:
$(window).on('load', function () {
$.ajax({
url: 'serverside/stories.php',
method: 'POST',
dataType: 'json',
success: function(response) {
$(".content").html("")
$(".total").html("")
if(response){
var total = response.length;
$('#intro') .append("<p>Get inspired by reading personal stories about anxiety</p>");
}
$.each(response, function() {
$.each($(this), function(i, item) {
var mycss = (item.Type == 1) ? ' style="color: #ffa449;"' : '';
$('.content').append('<div class="post"><div class="hideContent"><div class="post-text"> ' + item.MessageText + ' </div><div class="post-action"><input type="button" value="Like" id="like_' + item.ID + '_' + item.UserID + '" class="like" ' + mycss + ' /><span class="likesTotal" id="likes_' + item.ID + '_' + item.UserID + '">' + item.CntLikes + '</span></div></div>' + '<div class="showMore"><a href="#">Show more</a></div></div>');
});
});
}
});
});
【问题讨论】:
-
不是这个:
var $content = $this.closest("hideContent");应该是这个:var $content = $this.closest(".hideContent");,在 hideContent 选择中添加了一个点