views:

27

answers:

1

Hi

I have this code:

$(document).ready(function(){

    //how much items per page to show
    var show_per_page = 3; 
    //getting the amount of elements inside content div
    var number_of_items = $('#content').children('span').size();
    //calculate the number of pages we are going to have
    var number_of_pages = Math.ceil(number_of_items/show_per_page);

    //set the value of our hidden input fields
    $('#current_page').val(0);
    $('#show_per_page').val(show_per_page);

    //now when we got all we need for the navigation let's make it '

    /* 
    what are we going to have in the navigation?
        - link to previous page
        - links to specific pages
        - link to next page
    */
    var navigation_html = '<a href="javascript:previous();"><img border="0" src="images/prev.png"></a>';
        var current_link = 0;
    while(number_of_pages > current_link){
        navigation_html += '<a class="page_link" href="javascript:go_to_page(' + current_link +')" longdesc="' + current_link +'"></a>';
        current_link++;
    }
    navigation_html += '<a href="javascript:next();"><img border="0" src="images/next.png"></a>';

    $('#page_navigation').html(navigation_html);

    //add active_page class to the first page link
    $('#page_navigation .page_link:first').addClass('active_page');

    //hide all the elements inside content div
    $('#content').children().css('display', 'none');

    //and show the first n (show_per_page) elements
    $('#content').children().slice(0, show_per_page).css('display', 'block');

});


function previous(){

    new_page = parseInt($('#current_page').val()) - 1;
    //if there is an item before the current active link run the function
    if($('.active_page').prev('.page_link').length==true){
        go_to_page(new_page);
    }

}

function next(){
    new_page = parseInt($('#current_page').val()) + 1;
    //if there is an item after the current active link run the function
    if($('.active_page').next('.page_link').length==true){
        go_to_page(new_page);
    }

}
function go_to_page(page_num){
    //get the number of items shown per page
    var show_per_page = parseInt($('#show_per_page').val());

    //get the element number where to start the slice from
    start_from = page_num * show_per_page;

    //get the element number where to end the slice
    end_on = start_from + show_per_page;

    //hide all children elements of content div, get specific items and show them
    $('#content').children().css('display', 'none').slice(start_from, end_on).css('display', 'block');

    /*get the page link that has longdesc attribute of the current page and add active_page class to it
    and remove that class from previously active page link*/
    $('.page_link[longdesc=' + page_num +']').addClass('active_page').siblings('.active_page').removeClass('active_page');

    //update the current page input field
    $('#current_page').val(page_num);
}

and this HTML page :

<input type='hidden' id='current_page' />
<input type='hidden' id='show_per_page' />

 <div id="TabbedPanels1" class="TabbedPanels">
                                <ul class="TabbedPanelsTabGroup">
                                  <li class="TabbedPanelsTab" tabindex="0"><img src="images/news1.jpg"></li>
                                  <li class="TabbedPanelsTab" tabindex="0"><img src="images/news2.jpg"></li>
                                </ul>
                                <div class="TabbedPanelsContentGroup">
                                  <div class="TabbedPanelsContent">
                                        <div id="content">
                                                <span>
                                                    <div id="col">item 1</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 2</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 3</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 4</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 5</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 6</div>
                                                </span>
                                        </div>
                                        <div id="page_navigation"></div>
                                  </div>
                                  <div class="TabbedPanelsContent">
                                           <div id="content2">
                                                <span>
                                                    <div id="col">item 1</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 2</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 3</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 4</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 5</div>
                                                </span>
                                                 <span>
                                                    <div id="col">item 6</div>
                                                </span>
                                        </div>
                                        <div id="page_navigation2"></div>
                                  </div>
                                </div>
                            </div>    

I want to apply this navigation system twice on my page because I am using tab system (2 tabs), When I use this navigation on one tab, it's working successfully but how I can apply it for 2 tabs.

Thanks in advance.

A: 

Convert your code into a jQuery plugin. You might have to change your selectors and functions a little bit so they're more generic. Then, you can apply your plugin to each tab.

Start here with your plugin learning by executing the samples on your own machine. Then you can pick it up and convert your own function into a plugin. Its just a couple of lines of code, but as always, it has to be the "right" couple of lines. :)

http://docs.jquery.com/Plugins/Authoring

AndrewDotHay
Thanks for helping me, but I don' t know how to convert it into jQuery plugin, can you help me to convert it?
SzamDev