我試圖讓'See More'(展開)和'See Less'(摺疊)的JavaScript代碼工作。我將循環並在HTML中的每個類實例上調用此JavaScript代碼。展開/摺疊HTML中的文本 - Javascript
這實際上是第一次出現在頁面上。我把Console.logs看到它能正常工作。即每次點擊「See More」時,控制檯將打印一次「展開/摺疊」。
但是,設備的每個附加實例(在頁面上的另一段文本上)都不會展開。
會發生什麼情況是,在第二種情況下,控制檯打印 - 「展開,摺疊」。所以它實際上是即時的(這意味着它根本不會擴展)。
第三,它打印 - 「展開,摺疊,展開,摺疊,展開,摺疊」。幾乎像指數增長......任何想法?
function showMoreLess(element) {
var showChar = 150;
var ellipsestext = "...";
var moretext = "See More";
var lesstext = "See Less";
var content = $(element).html();
if (content.length > showChar) {
var show_content = content.substr(0, showChar);
var hide_content = content.substr(showChar, content.length - showChar);
var html = show_content
+ '<span class="moreelipses">'
+ ellipsestext
+ '</span><span class="remaining-content"><span>'
+ hide_content + '</span> <a href="" class="morelink">'
+ moretext
+ '</a></span>';
$(element).html(html);
}
$(".morelink").click(function() {
if ($(this).hasClass("less")) {
$(this).removeClass("less");
$(this).html("See More");
console.log("Collapse") // "Collapse" appears in console
} else {
$(this).addClass("less");
$(this).html("See Less");
console.log("Expand") // "Expand" appears in console
}
$(this).parent().prev().toggle();
$(this).prev().toggle();
return false;
});
}
這是JQuery的代碼,通過每個類循環:
$(function() {
$.each($(".limitedTextSpace"), function(index, value) {
showMoreLess(value);
});
});
編輯:
我跟着羅伯託利納雷斯格式和重建函數,如下所示:
function showMoreLess(element) {
var showChar = 150;
var ellipsestext = "...";
var moretext = "See More";
var lesstext = "See Less";
var content = $(element).html();
if (content.length > showChar) {
var show_content = content.substr(0, showChar);
var hide_content = content.substr(showChar, content.length - showChar);
var html = '<span class="collapsed">' + show_content
+ ellipsestext
+ '</span><span class="expanded">'
+ content
+ '</span><a href="javascript:void(0)" class="collapsed">'
+ moretext
+ '</a><a href="javascript:void(0)" class="expanded">'
+ lesstext
+ '</a>'
$(element).html(html);
}
}
然後我做了其他循環功能的細微變化,以及:
$(function() {
$.each($(".limitedTextSpace"), function(index, value) {
showMoreLess(value);
});
$(".expanded").hide();
$(".expanded, .collapsed").click(function() {
$(this).parent().children(".expanded, .collapsed").toggle();
});
});
不過,現在有當有文本打破了這個問題。該代碼將同一文本的每個段落解釋爲不同的展開/摺疊實例 - 這意味着不是一個文本塊展開/摺疊,而是每個段落有多個展開/摺疊。
您標記爲boostrap? Bootstrap有一個內置的崩潰http://getbootstrap.com/javascript/#collapse –