JQuery 플러그인 37개: 폭포 흐름 간편 응용 프로그램 플러그인

4714 단어


(function($) {
    $.fn.noPage = function(options) {
        var defaults = {
            index: "img",   //        
            item: "",       //  Css 
            foot: "",       //    Css 
            url: "",        //         ,           
            end: null,   //          
            init: null      //     ,            
        }
        var opts = $.extend(defaults, options);
        //        
        function getFileName() {
            var url = this.location.href
            var pos = url.lastIndexOf("/");
            if (pos == -1) {
                pos = url.lastIndexOf("\\")
            }
            var filename = url.substr(pos + 1)
            return filename.split('?')[0];
        }
        if (typeof opts.init == "function")
        { if (!opts.init()) return; }
        var pageName = opts.index;
        var urlParam = { "random": Math.random() * 1000 };
        urlParam[pageName] = 2;
        var s = location.search;
        if (s != null && s.length > 1) {
            var sarr = s.substr(1).split("&");
            var tarr;
            for (i = 0; i < sarr.length; i++) {
                tarr = sarr[i].split("=");
                urlParam[tarr[0]] = tarr[1];
            }
        }
        var ajaxServer = (opts.url == "") ? getFileName() : opts.url;
        //                
        this.each(function() {
            var $container = $(this); //    JQ  
            $container.css("height", "auto");   //        //  bug  
            var onOff = true;                   //          
            $(window).scroll(function() {       //           20     
                if (Number($(document).height()) * 1 - $(this).scrollTop() - $(this).height() < 20) {   //         20   ,      
                    if (onOff) {
                        onOff = false;  //         
                        $.ajax({
                            url: getFileName(),
                            dataType: "text",
                            type: "GET",
                            async: false,
                            data: urlParam,
                            beforeSend: function() { },
                            success: function(data) {
                                if (data != null) {
                                    var $List = $(data).find(opts.item);
                                    if ($List.length == 0) { alert("   "); return; }
                                    //        .                 
                                    var $Footer = $container.find(opts.foot);
                                    if ($Footer.length == 0) {
                                        $container.append($List);
                                    } else {
                                        $List.insertBefore($Footer);
                                    }
                                    if (typeof opts.end == "function")
                                    { var flag = opts.end(data); if (!flag) return; }

                                    onOff = true;
                                    urlParam[pageName] = parseInt(urlParam[pageName]) + 1;
                                }
                            },
                            error: function(XMLHttpRequest, textStatus, errorThrown) {
                                alert(XMLHttpRequest.status);
                                alert(XMLHttpRequest.readyState);
                                alert(textStatus);
                            }
                        })
                    }
                }
            });
        });
    };
})(jQuery);


$(function() {
    $(".mian_b_bg").noPage({
        item: ".ItemTemplate",
        foot: ".FooterTemplate",
        init: function() {
            var paginator = $(".paginator");
            if (paginator.length > 0) {
                $(".fy_ty").css("display", "none");
                return true;
            } else {
                alert("        ");
                return false;
            }
        },
        end: function(data) {
            var paginator = $(".paginator", data);
            if (paginator.find(".cpb").next().is("a")) {
                return true;
            } else {
                setTimeout(function() {
                    alert("    ");
                }, 1800);
                return false;
            }
        }
    })
});


위의 플러그인은 한 페이지에서 더 많은 데이터를 볼 수 있고, 모든 목록을 뒤지지 않습니다.

좋은 웹페이지 즐겨찾기