Как добиться эффекта «показать больше» в Twitter, но без ajax?

#jquery #jquery-plugins

#jquery #jquery-плагины

Вопрос:

У меня есть неупорядоченный список из 50 элементов. Я хочу показывать только 10 одновременно с дополнительной ссылкой внизу. Точно так, только без ajax, поскольку мне это не нужно.

Не могли бы вы, пожалуйста, дать мне совет или направить меня к руководству о том, как я могу достичь этого эффекта?

Спасибо!

РЕДАКТИРОВАТЬ: Спасибо Ройи Намиру за ссылку. Я пытаюсь показать 2 элемента на странице из списка из 10, но не могу понять, что я делаю не так…

JS

 function pageselectCallback(page_index, jq){
                // Get number of elements per pagionation page from form
                var items_per_page = 2;
                var max_elem = Math.min((page_index 1) * items_per_page, members.length);
                var newcontent = '';

                // Iterate through a selection of the content and build an HTML string
                for(var i=page_index*items_per_page;i<max_elem;i  )
                {
                                      newcontent = jQuery('#hiddenresult div.result:eq(' i ')').append();
                }

                // Replace old content with new content
                $('#Searchresult').html(newcontent);

                // Prevent click eventpropagation
                return false;
}

/** 
 * Initialisation function for pagination
 */
function initPagination() {
        // Create content inside pagination element
        $("#Pagination").pagination(10, {
                callback: pageselectCallback,
                load_first_page:true,
                items_per_page:2 
        });
 }

// When document is ready, initialize pagination
$(document).ready(function(){      
        initPagination();
});
  

HTML:

 <div id="Pagination"></div>
    <br style="clear:both;" />
    <div id="Searchresult">
        This content will be replaced when pagination inits.
    </div>

    <!-- Container element for all the Elements that are to be paginated -->
    <div id="hiddenresult" style="display:none;">
        <div class="result">111</div>
        <div class="result">222</div>
        <div class="result">333</div>
        <div class="result">444</div>
    </div>
  

ПРАВКА # 2: Найден мой ответ: D http://th3silverlining.com/2010/04/15/pajination-a-jquery-pagination-plugin

Ответ №1:

Загрузите полный контент, если вы не хотите использовать AJAX.

Вы можете скрывать элементы с помощью jQuery и CSS. Взгляните, например, на show() и hide() . Вы можете включить кнопку на ваш показать еще ссылку и замените эту ссылку с менее ссылке напротив, слишком.

http://api.jquery.com/show/
http://api.jquery.com/hide/

Комментарии:

1. Конечно, скрытая ссылка была добавлена мной. Вы скрываете старую кнопку «Еще» или размещаете ее внизу и заменяете цель / селектор на следующий элемент для отображения.

Ответ №2:

Комментарии:

1. Спасибо! На самом деле это лучше, чем я хотел. Однако у меня возникла небольшая проблема с написанием функции обратного вызова…

2. сначала выберите ответ, который вам помог. а затем откройте новый вопрос 🙂

Ответ №3:

Самый простой способ, который я могу придумать для этого, — это использовать несколько ссылок «скрыть показать».

добавьте этот простой код в нижнюю часть вашей страницы.

     <script type="text/javascript">
  $(document).ready(function () {
        // choose text for the show/hide link - can contain HTML (e.g. an image)
        var showText = 'expand';
        var hideText = 'hide';

        // initialise the visibility check
        var is_visible = false;

        // append show/hide links to the element directly preceding the element with a class of "toggle"
        $('.toggle').prev().append(' <a href="#" class="toggleLink">'   showText   '</a>');

        // hide all of the elements with a class of 'toggle'
        $('.toggle').hide();

        // capture clicks on the toggle links
        $('a.toggleLink').click(function () {

            // change the link depending on whether the element is shown or hidden
            if ($(this).html() == hideText) {
                $(this).html(showText);
                $(this).removeClass('hide');
                $(this).parent().removeClass('purple');
            }
            else {
                $(this).html(hideText);
                $(this).addClass('hide');
                $(this).parent("h2").hide();
            }

            // toggle the display - uncomment the next line for a basic "accordion" style
            $(this).parent().next('.toggle').toggle();

            // return false so any link destination is not followed
            return false;

        });
    });
</script>
  

затем просто оберните каждую группу из десяти элементов следующим образом

 <div class="nextresults">
        <h2 class="more">Show More</h2>
         <div class="toggle">
           {10 results go hear!!}    
         </div>
  </div>
  

Для полного исправления этого кода goto http://andylangton.co.uk/articles/javascript/jquery-show-hide-multiple-elements