jQuery загружает первые 3 элемента для нескольких списков ul

0

Этот вопрос был задан давно и также ответил, что здесь jQuery загружает первые 3 элемента, нажмите "загрузить больше", чтобы отобразить следующие 5 элементов, но это было только для одного элемента ul.

Тем не менее, я хочу знать, как сделать то же самое для нескольких элементов, скажем, у меня есть это:

<ul id="myList"></ul>
<ul id="myList1"></ul>
<ul id="myList2"></ul>

как сделать javascript для нескольких элементов в этом случае?

$(document).ready(function () {
    size_li = $("#myList li").size();
    x=3;
    $('#myList li:lt('+x+')').show();
    $('#loadMore').click(function () {
        x= (x+5 <= size_li) ? x+5 : size_li;
        $('#myList li:lt('+x+')').show();
         $('#showLess').show();
        if(x == size_li){
            $('#loadMore').hide();
        }
    });
    $('#showLess').click(function () {
        x=(x-5<0) ? 3 : x-5;
        $('#myList li').not(':lt('+x+')').hide();
        $('#loadMore').show();
         $('#showLess').show();
        if(x == 3){
            $('#showLess').hide();
        }
    });
});  

любая идея, как это сделать??

благодаря

Обновление # 1:

Это моя другая часть кода для showmore и бесчувственный

<div id="loadMore">Load more</div><div id="showLess">show Less</div>

Обновление # 2

что, если классы, используемые вместо ids, облегчили бы это? как это:

    <ul class="myList"></ul>
    <ul class="myList"></ul>
    <ul class="myList"></ul>

и каждый showmore/Less может управлять одним из них. поэтому один к одному... это возможно???

  • 1
    а где ваши #loadMore и #showLess ?
  • 0
    Хорошо, я добавлю это в основной пост. Спасибо за вопрос
Показать ещё 4 комментария
Теги:
html-lists
show-hide

1 ответ

2
Лучший ответ

Вы можете изменить свой код, используя классы вместо ids и wrapping div; чем соответственно изменить логику с помощью вложенности элементов.

Вместо использования переменной вы можете использовать атрибут HTML для хранения текущего количества отображаемых li для каждой ul.

Код:

$(document).ready(function () {

    $(".wrapper").each(function (index) {
        $(this).find('.myList li:lt(' + $(this).attr('viewChild') + ')').show();
    });   

    $('.loadMore').click(function () {
        var $myWrapper= $(this).closest('.wrapper');
        var x= parseInt($myWrapper.attr('viewChild'),10);
        var liSize=$myWrapper.find('.myList li').size();        
        x = (x + 5 <= liSize) ? x + 5 : liSize;
        $myWrapper.attr('viewChild',x)
        $myWrapper.find('.myList li:lt(' + x + ')').show();
        $myWrapper.find('.showLess').show();
        if (x == liSize) {
            $myWrapper.find('.loadMore').hide();
        }
    });

    $('.showLess').click(function () {
        var $myWrapper= $(this).closest('.wrapper');
        var x= $myWrapper.attr('viewChild')
        x = (x - 5 < 0) ? 3 : x - 5;
        $myWrapper.attr('viewChild',x)
        $myWrapper.find('.myList li').not(':lt(' + x + ')').hide();
        $myWrapper.find('.loadMore').show();
        $myWrapper.find('.showLess').show();
        if (x == 3) {
            $myWrapper.find('.showLess').hide();
        }
    });
});

Демо: http://jsfiddle.net/9gxBT/

  • 0
    Большое спасибо @ Ирвин Доминин ака Эдвард. ты взорвал мой разум этим огромным усилием. Слова благодарности недостаточно за ту огромную помощь, которую вы оказали. Желаю тебе всего самого наилучшего!
  • 1
    @Digitalsite, пожалуйста, и спасибо за хорошие слова!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню