www.gusucode.com > 51:【198-3365】仿寻模板网页模板下载素材销售下载站平台织梦模板 > 51:【198-3365】仿寻模板网页模板下载素材销售下载站平台织梦模板/templets/js/jquery.jumpto.js
/* =========================================================== * jquery-jumpto.js v1 * =========================================================== * Copyright 2013 Pete Rojwongsuriya. * http://www.thepetedesign.com * * Create a smooth jump to sub navigational sidebar * with one js call * * https://github.com/peachananr/jumpto * * ========================================================== */ !function($){ var defaults = { firstLevel: "> h2", secondLevel: false, innerWrapper: ".menu-wrap", offset: 90, animate: 1000, navContainer: false, anchorTopPadding: 20, showTitle: false, closeButton: false }; function isScrolledIntoView(elem) { var docViewTop = $(window).scrollTop(); var docViewBottom = docViewTop + ($(window).height() /4); var elemTop = $(elem).offset().top; var elemBottom = elemTop + $(elem).height(); return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); } $.fn.jumpto = function(options){ var settings = $.extend({}, defaults, options), el = $(this), html = "", block = $(settings.innerWrapper), selectors = "", title = "", close =""; el.addClass("jumpto-cotainer"); redrawMenu = function(){ $(selectors.slice(0,-2)).each(function( index ) { if (isScrolledIntoView($(this))) { $(".about-subnav a").removeClass("on").parent().find(" a[href='#"+$(this).attr("id")+"']").addClass("on") if($("a[href='#"+$(this).attr("id")+"']").parent().parent().hasClass("jumpto-second")) { $("a[href='#"+$(this).attr("id")+"']").closest(".jumpto-second").show() } if($("a[href='#"+$(this).attr("id")+"']").parent().parent().hasClass("about-menu")) { $("a[href='#"+$(this).attr("id")+"']").closest(".about-menu").find(".jumpto-second").hide() } if($("a[href='#"+$(this).attr("id")+"']").parent().find(".jumpto-second")) { $("a[href='#"+$(this).attr("id")+"']").parent().find(".jumpto-second").show() } } }); if($(document).scrollTop() > settings.offset) { $(".about-subnav").removeClass("bottom").addClass("fixed"); } else { $(".about-subnav").removeClass("bottom fixed"); } if($(document).scrollTop() > el.outerHeight(true)) { $(".about-subnav").addClass("bottom fixed"); } } block.find(settings.firstLevel).each(function( index ) { var b = $(this), i = index, inner_html = ""; if ( b.parent().find(settings.secondLevel).length > 0) { inner_html += "<ul class='jumpto-second'>" b.parent().find(settings.secondLevel).each(function( index ) { var id = "section-" + i + "_" + index; $(this).attr("id", id); link_to = "<a href='#" + id + "'>" + $(this).text() + "</a>" inner_html += "<li>" + link_to + "</li>" selectors += "#"+id + ", "; }); inner_html += "</ul>" var id = "section-" + i; b.attr("id", id); link_to = "<a href='#" + id + "'>" + b.text() + "</a>" selectors += "#"+id + ", "; html += "<li>" + link_to + inner_html + "</li>" } else { var id = "section-" + i; link_to = "<a href='#" + id + "'>" + b.text() + "</a>" b.attr("id", id); selectors += "#"+id + ", "; html += "<li>" + link_to + "</li>" } }); if (settings.showTitle != false) { var title = "<div class='jumpto-title'>"+settings.showTitle+"</div>" } if (settings.closeButton != false) { var close = "<div class='jumpto-close'><a href='#' id='jumpto-close'>Close</a></div>" } if(settings.navContainer == false) { $(this).append("<nav class='about-subnav'>"+ title +"<ul class='about-menu'>" + html + "</ul>"+ close +"</nav>") }else{ $(settings.navContainer).addClass("about-subnav").html(title +"<ul class='about-menu'>" + html + "</ul>"+ close) } $('.about-subnav a[href*=#]:not([href=#])').click(function() { if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') || location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); if (target.length) { $('html,body').animate({ scrollTop: target.offset().top - settings.anchorTopPadding }, settings.animate, 'swing'); return false; } } }); $(window).scroll(function() { redrawMenu() }); // $(".about-subnav #jumpto-close").click(function() { // var btn = $(this) // btn.parent().parent().find("> .about-menu").slideToggle( "slow", function() { // if ($(this).is(":visible")) { // btn.html("Close"); // } else { // btn.html("Open"); // } // }); // return false; // }); setInterval(function() { var track = []; $(selectors.slice(0,-2)).each(function( index ) { track.push(isScrolledIntoView($(this))) }); if($.inArray(true, track) == -1) { // $(".about-subnav a").removeClass("on") $(".about-subnav .jumpto-second").hide() } }, 500); } }(window.jQuery);