Задать вопрос
DimaLepel
@DimaLepel

Как добавить надпись «Показать еще»?

Добрый вечер. Есть список:
<ul class = "checkbox">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

Есть обработчик:
// Спойлер для списков фильтра
$('ul.checkbox').each(function(){
	$(this).find('li:gt(9)').hide();
	if ($(this).find('li').length > 10) {
		$(this).append('<div class = "btn gray see-more" title = "">Показать еще</div>');
	}
})
$('div.see-more').click(function(){
	var ul = $(this).parent();
	// ul.find('li:hidden:lt(99)').show();
	ul.find('li:gt(9)').slideToggle();
	ul.find('li:hidden:lt(99)').slideToggle();
	if (ul.find('li.hidden').length == 0) {
		$(this).html('Скрыть');
	}
})

Он скрывает пункты списка под спойлер, если их больше 10 и выводит кнопку "Показать еще". При нажатии список раскрывается и надпись меняется на "Скрыть". Но при скрытии списка надпись обратно не меняется. Помогите исправить. Спасибо.
  • Вопрос задан
  • 582 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
evgeniy8705
@evgeniy8705
Повелитель вселенной
Ответ написан
Комментировать
@Ridz
// Спойлер для списков фильтра
var maxLi = 10, text = ["Скрыть", "Показать еще"];
$("ul.checkbox").each(function() {
    var li = $(this).find("li");
    if (li.length > maxLi) {
        li = li.slice(maxLi).hide();
        var btn = $("<div>", {
            text: text[1],
            "class": "btn gray see-more",
            click: function() {
                li.stop().slideToggle(500, function() {
                    btn.text(text[+$(this).is(":hidden")])
                })
            }
        }).appendTo(this)
    }
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
mrusklon
@mrusklon
Не получается? Яростно гугли!
$('ul.checkbox') ... $(this).append и $('div.see-more').click ... $(this).html( не как не связанные вещи
Ответ написан
Комментировать
carlcox
@carlcox
Fullstack developer
if (ul.find('li.hidden').length == 0) {
    $(this).html('Скрыть');
  }else{
    $(this).html('Показать ещё');
}
?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы