Передача селектора jquery подфункции в плагине - PullRequest
0 голосов
/ 12 февраля 2009

Я пытаюсь создать быстрый плагин jquery (как учебное упражнение) для создания простого пейджера из списка элементов (в данном случае LI) и столкнулся с проблемой при передаче текущего селектора (этого) в подфункция. Код ниже.

Проблема заключается в создании динамической навигации (плагин требует jquery 1.3), и мне нужно передать селектор, так как именно эта подфункция выполняет фактическое отображение / скрытие, которые составляют пейджер. Я пытаюсь следующее

var selector = $(this);

Чтобы получить селектор, затем передать его подфункции в нижней части скрипта следующим образом

$(".pageNav a").live("click", function(selector) {

и надеемся использовать селектор в подфункции следующим образом

$(selector).hide();

Но я ничего не получаю. Любой совет будет оценен, нет необходимости заканчивать плагин для меня!

Спасибо

(function($) {
$.fn.quickPager = function() {

    //edit this
    var pageSize = 10;
    //leave this
    var selector = $(this);
    var totalRecords = $(this).length;
    var currentPage = 1;
    var pageCounter = 1;

    $(this).each(function(i){
        if(i < pageCounter*pageSize && i >= (pageCounter-1)*pageSize) {
            $(this).addClass("page"+pageCounter);
        }
        else {
            $(this).addClass("page"+(pageCounter+1));
            pageCounter ++;
        }   
    });

    //show/hide the appropriate regions 
    $(this).hide();
    $(".page"+currentPage).show();

    //first check if there is more than one page. If so, build nav
    if(pageCounter > 1) {

        //Build pager navigation
        var pageNav = "<ul class='pageNav'>";   
        for (i=1;i<=pageCounter;i++){

            if (i==1) {
                pageNav += "<li class=currentPage pageNav"+i+"'><a rel='"+i+"' href='#'>Page "+i+"</a></li>";   
            }
            else {
                pageNav += "<li class='pageNav"+i+"'><a rel='"+i+"' href='#'>Page "+i+"</a></li>";
            }

        }
        pageNav += "</ul>";
        $("#pagerContainer").append(pageNav);

        //pager navigation behaviour
        $(".pageNav a").live("click", function(selector) {          
            //grab the REL attribute 
            var clickedLink = $(this).attr("rel");
            currentPage = clickedLink;
            //remove current current (!) page
            $("li.currentPage").removeClass("currentPage");
            //Add current page highlighting
            $(this).parent("li").addClass("currentPage");
            //hide and show relevant links
            //$("ul.paging li").text("TEST");
            $(selector).hide();
            $(selector+".page"+clickedLink).show();
            return false;
        });

    }



}
})(jQuery);

Ответы [ 3 ]

4 голосов
/ 12 февраля 2009
var selector = $(this);
$(".pageNav a").live("click", function() {
  // do something
  selector.hide();
});
0 голосов
/ 12 февраля 2009

Кажется, отсутствующая ссылка была

selector.parent().find(".page"+clickedLink).show();

Спасибо за вашу бесценную помощь, кварк.

0 голосов
/ 12 февраля 2009

и изменение

$(selector+".page"+clickedLink).show();

до

selector.find(".page"+clickedLink).show();

селектор это не строка, это объект jQuery, который содержит все элементы, которые плагин понимает как this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...