javascript上的上一个和下一个按钮

时间:2012-06-20 11:29:33

标签: javascript jquery html css

我有一个适用于画廊的JavaScript,效果很好。当我点击一张图片时,它会淡入并显示我选择的图片,但它没有NEXT和PREVIUS按钮。我必须关闭那张照片并打开另一张照片。 如何添加下一个和上一个按钮? 日Thnx

这是js代码(thickbox.js):

/*
 * Thickbox 3.1 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2007 cody lindley
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

var tb_pathToImage = "images/loadingAnimation.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
$(document).ready(function(){   
    tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
    imgLoader = new Image();// preload image
    imgLoader.src = tb_pathToImage;
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk){
    $(domChunk).click(function(){
    var t = this.title || this.name || null;
    var a = this.href || this.alt;
    var g = this.rel || false;
    tb_show(t,a,g);
    this.blur();
    return false;
    });
}

function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link

    try {
        if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
            $("body","html").css({height: "100%", width: "100%"});
            $("html").css("overflow","hidden");
            if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
                $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
                $("#TB_overlay").click(tb_remove);
            }
        }else{//all others
            if(document.getElementById("TB_overlay") === null){
                $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
                $("#TB_overlay").click(tb_remove);
            }
        }

        if(tb_detectMacXFF()){
            $("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
        }else{
            $("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
        }

        if(caption===null){caption="";}
        $("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
        $('#TB_load').show();//show loader

        var baseURL;
       if(url.indexOf("?")!==-1){ //ff there is a query string involved
            baseURL = url.substr(0, url.indexOf("?"));
       }else{ 
            baseURL = url;
       }

       var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
       var urlType = baseURL.toLowerCase().match(urlString);

        if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images

            TB_PrevCaption = "";
            TB_PrevURL = "";
            TB_PrevHTML = "";
            TB_NextCaption = "";
            TB_NextURL = "";
            TB_NextHTML = "";
            TB_imageCount = "";
            TB_FoundURL = false;
            if(imageGroup){
                TB_TempArray = $("a[@rel="+imageGroup+"]").get();
                for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
                    var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
                        if (!(TB_TempArray[TB_Counter].href == url)) {                      
                            if (TB_FoundURL) {
                                TB_NextCaption = TB_TempArray[TB_Counter].title;
                                TB_NextURL = TB_TempArray[TB_Counter].href;
                                TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
                            } else {
                                TB_PrevCaption = TB_TempArray[TB_Counter].title;
                                TB_PrevURL = TB_TempArray[TB_Counter].href;
                                TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
                            }
                        } else {
                            TB_FoundURL = true;
                            TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);                                         
                        }
                }
            }

            imgPreloader = new Image();
            imgPreloader.onload = function(){       
            imgPreloader.onload = null;

            // Resizing large images - orginal by Christian Montoya edited by me.
            var pagesize = tb_getPageSize();
            var x = pagesize[0] - 150;
            var y = pagesize[1] - 150;
            var imageWidth = imgPreloader.width;
            var imageHeight = imgPreloader.height;
            if (imageWidth > x) {
                imageHeight = imageHeight * (x / imageWidth); 
                imageWidth = x; 
                if (imageHeight > y) { 
                    imageWidth = imageWidth * (y / imageHeight); 
                    imageHeight = y; 
                }
            } else if (imageHeight > y) { 
                imageWidth = imageWidth * (y / imageHeight); 
                imageHeight = y; 
                if (imageWidth > x) { 
                    imageHeight = imageHeight * (x / imageWidth); 
                    imageWidth = x;
                }
            }
            // End Resizing

            TB_WIDTH = imageWidth + 30;
            TB_HEIGHT = imageHeight + 60;
            $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");      

            $("#TB_closeWindowButton").click(tb_remove);

            if (!(TB_PrevHTML === "")) {
                function goPrev(){
                    if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);}
                    $("#TB_window").remove();
                    $("body").append("<div id='TB_window'></div>");
                    tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
                    return false;   
                }
                $("#TB_prev").click(goPrev);
            }

            if (!(TB_NextHTML === "")) {        
                function goNext(){
                    $("#TB_window").remove();
                    $("body").append("<div id='TB_window'></div>");
                    tb_show(TB_NextCaption, TB_NextURL, imageGroup);                
                    return false;   
                }
                $("#TB_next").click(goNext);

            }

            document.onkeydown = function(e){   
                if (e == null) { // ie
                    keycode = event.keyCode;
                } else { // mozilla
                    keycode = e.which;
                }
                if(keycode == 27){ // close
                    tb_remove();
                } else if(keycode == 190){ // display previous image
                    if(!(TB_NextHTML == "")){
                        document.onkeydown = "";
                        goNext();
                    }
                } else if(keycode == 188){ // display next image
                    if(!(TB_PrevHTML == "")){
                        document.onkeydown = "";
                        goPrev();
                    }
                }   
            };

            tb_position();
            $("#TB_load").remove();
            $("#TB_ImageOff").click(tb_remove);
            $("#TB_window").css({display:"block"}); //for safari using css instead of show
            };

            imgPreloader.src = url;
        }else{//code to show html

            var queryString = url.replace(/^[^\?]+\??/,'');
            var params = tb_parseQuery( queryString );

            TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
            TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
            ajaxContentW = TB_WIDTH - 30;
            ajaxContentH = TB_HEIGHT - 45;

            if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window      
                    urlNoQuery = url.split('TB_');
                    $("#TB_iframeContent").remove();
                    if(params['modal'] != "true"){//iframe no modal
                        $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
                    }else{//iframe modal
                    $("#TB_overlay").unbind();
                        $("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
                    }
            }else{// not an iframe, ajax
                    if($("#TB_window").css("display") != "block"){
                        if(params['modal'] != "true"){//ajax no modal
                        $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
                        }else{//ajax modal
                        $("#TB_overlay").unbind();
                        $("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>"); 
                        }
                    }else{//this means the window is already up, we are just loading new content via ajax
                        $("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
                        $("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
                        $("#TB_ajaxContent")[0].scrollTop = 0;
                        $("#TB_ajaxWindowTitle").html(caption);
                    }
            }

            $("#TB_closeWindowButton").click(tb_remove);

                if(url.indexOf('TB_inline') != -1){ 
                    $("#TB_ajaxContent").append($('#' + params['inlineId']).children());
                    $("#TB_window").unload(function () {
                        $('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
                    });
                    tb_position();
                    $("#TB_load").remove();
                    $("#TB_window").css({display:"block"}); 
                }else if(url.indexOf('TB_iframe') != -1){
                    tb_position();
                    if($.browser.safari){//safari needs help because it will not fire iframe onload
                        $("#TB_load").remove();
                        $("#TB_window").css({display:"block"});
                    }
                }else{
                    $("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
                        tb_position();
                        $("#TB_load").remove();
                        tb_init("#TB_ajaxContent a.thickbox");
                        $("#TB_window").css({display:"block"});
                    });
                }

        }

        if(!params['modal']){
            document.onkeyup = function(e){     
                if (e == null) { // ie
                    keycode = event.keyCode;
                } else { // mozilla
                    keycode = e.which;
                }
                if(keycode == 27){ // close
                    tb_remove();
                }   
            };
        }

    } catch(e) {
        //nothing here
    }
}

//helper functions below
function tb_showIframe(){
    $("#TB_load").remove();
    $("#TB_window").css({display:"block"});
}

function tb_remove() {
    $("#TB_imageOff").unbind("click");
    $("#TB_closeWindowButton").unbind("click");
    $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
    $("#TB_load").remove();
    if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
        $("body","html").css({height: "auto", width: "auto"});
        $("html").css("overflow","");
    }
    document.onkeydown = "";
    document.onkeyup = "";
    return false;
}

function tb_position() {
$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
    if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
        $("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
    }
}

function tb_parseQuery ( query ) {
   var Params = {};
   if ( ! query ) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function tb_getPageSize(){
    var de = document.documentElement;
    var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
    var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
    arrayPageSize = [w,h];
    return arrayPageSize;
}

function tb_detectMacXFF() {
  var userAgent = navigator.userAgent.toLowerCase();
  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
    return true;
  }
}

`

这是HTML: `

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>STUDIOCLICK - PORTFOLIO</title>
<!-- CSS Files -->
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="css/thickbox.css" type="text/css" media="screen" />
<link rel="stylesheet" type="text/css" href="css/superfish.css" media="screen" />
<style type="text/css">
.sf-sub-indicator {
    behavior: url(css/iepngfix.htc)
}
;
</style>
<!-- End of CSS Files -->
<!-- Javascript Files -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="javascript/thickbox.js"></script>
<script type="text/javascript" src="javascript/superfish.js"></script>
<script type="text/javascript" src="javascript/dd.min.js"></script>
<script type="text/javascript">
//<![CDATA[

        // initialise plugins
        $(document).ready(function() { 

            if ($('#slider').length == 1)
            {
                $('#slider').cycle({
                        fx: 'fade',
                        speed: 2000,
                        timeout: 4000
                });
            }

            var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent);

            if (!ie6)
            {
                $('ul.sf-menu').superfish({ 
                    delay:       1000,                            // one second delay on mouseout 
                    animation:   {opacity:'show',height:'show'},  // fade-in and slide-down animation 
                    speed:       'normal'                         // faster animation speed 
                });             
            }
            else
            {
                DD_belatedPNG.fix('#topbar, img, a, .commentbubble, .infobubble, .view-all, #category-picture1, #category-picture2, #category-picture3, #footer');
            }
    }); 
//]]>

        </script>
<!-- End of Javascript Files -->
</head>
<body>
<!-- Wrapper -->
<div id="wrapper">
    <!-- Top bar -->
    <div id="topbar">
        <!-- Logo -->
        <img class="logo" src="images/logo.png" alt="logo" />
        <!-- Menu -->
        <div id="secnav">
            <ul>
                <li> <a href="#">SIGN UP</a> </li>
                <li class="noimg"> <a href="#">LOGIN</a> </li>
            </ul>
        </div>
        <div class="menu">
            <ul class="sf-menu">
                <li> <a href="index.html">HOME</a></li>
                <li> <a href="about.html">ABOUT</a>
                    <ul>
                        <li class="first"><a href="about.html">TEAM</a></li>
                        <li><a href="about.html">PHILOSOPHY</a></li>
                        <li><a href="about.html">COMPANY</a></li>
                        <li class="last"><a href="about.html">PRODUCTS</a>
                            <ul>
                                <li class="first"><a href="about.html">PRODUCT ONE</a></li>
                                <li><a href="about.html">PRODUCT TWO</a></li>
                                <li class="last"><a href="about.html">PRODUCT THREE</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li> <a class="on" href="portfolio.html">PORTFOLIO</a>
                    <ul>
                        <li><a href="portfolio.html">WEBDESIGN</a></li>
                        <li><a href="portfolio.html">PHOTOS</a>
                            <ul>
                                <li class="first"><a href="portfolio.html">NATURE</a></li>
                                <li><a href="portfolio.html">ANIMALS</a></li>
                                <li class="last"><a href="portfolio.html">CITIES</a>
                                    <ul>
                                        <li class="first"><a href="portfolio.html">NEW YORK</a></li>
                                        <li><a href="portfolio.html">MONTREAL</a></li>
                                        <li class="last"><a href="portfolio.html">LAS VEGAS</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                        <li class="last"><a href="portfolio.html">ARTS</a></li>
                    </ul>
                </li>
                <li> <a href="blog.html">BLOG</a>
                    <ul>
                        <li class="first"><a href="blog.html">CATEGORY ONE</a></li>
                        <li><a href="blog.html">CATEGORY TWO</a></li>
                        <li class="last"><a href="blog.html">CATEGORY THREE</a></li>
                    </ul>
                </li>
                <li> <a href="contact.html">CONTACT</a> </li>
            </ul>
        </div>
        <!-- End of Menu -->
    </div>
    <!-- End of Topbar -->
    <!-- Introtext -->
    <div id="introtext">
        <!-- Subcategory-->
        <div class="subcategory">
            <h1>CATEGORY +</h1>
            <ul>
                <li><a href="#">NATURE</a></li>
                <li><a href="#">CITY</a></li>
                <li><a href="#">ANIMAL</a></li>
                <li><a href="#">ABSTRACT</a></li>
            </ul>
        </div>
        <!-- End of subcategory-->
        <h1>PORTFOLIO  +</h1>
        <p>Praesent id dolor et dolor viverra sagittis. Integer scelerisque quam nec est congue tempor eu ut metus. Etiam fringilla aliquam nulla eu bibendum. Ut cursus, ligula vel mollis hendrerit, est enim posuere velit, ultricies pretium tortor massa ut ipsum. Aenean a aliquet arcu.</p>
        <div class="clear"></div>
    </div>
    <!-- End of introtext -->
    <!-- Content -->
    <div class="portfolioitem">
        <ul>
            <li><a class="thickbox" href="images/photo9big.jpg"><img src="images/photo9.png" alt="photo"/></a></li>
            <li><a class="thickbox" href="images/photo1big.jpg"><img src="images/photo1.png" alt="photo"/></a></li>
            <li class="last"><a class="thickbox"  href="images/photo3big.jpg" ><img src="images/photo3.png" alt="photo" /></a></li>
            <li><a class="thickbox" href="images/photo6big.jpg"><img src="images/photo6.png" alt="photo"/></a></li>
            <li><a class="thickbox" href="images/photo5big.jpg"><img src="images/photo5.png" alt="photo"/></a></li>
            <li class="last"><a class="thickbox" href="images/photo4big.jpg" ><img class="right" src="images/photo4.png" alt="photo"  /></a></li>
            <li><a class="thickbox" href="images/photo7big.jpg"><img src="images/photo7.png" alt="photo"/></a></li>
            <li><a class="thickbox" href="images/photo2big.jpg" ><img class="right" src="images/photo2.png" alt="photo"  /></a></li>
            <li class="last"><a class="thickbox" href="images/photo1big.jpg"><img src="images/photo1.png" alt="photo"/></a></li>
        </ul>
    </div>
    <div id="portfolionav">
        <ul>
            <li class="on"><a href="#">1</a></li>
            <li><a href="#">2</a></li>
            <li><a href="#">3</a></li>
            <li><a href="#">4</a></li>
            <li class="next"><a href="#">NEXT</a></li>
        </ul>
    </div>
    <!-- End of content-->
    <div class="clear"></div>
    <!-- Footer-->

    <!-- End of footer-->
</div>
<!-- End of wrapper -->
</body>
</html>
`

1 个答案:

答案 0 :(得分:1)

检查jQuery插件页面上的第二个演示:

http://jquery.com/demo/thickbox/

在这里,您将看到底部的下一个和上一个按钮。

祝你好运!


顺便提一下(2009年的某个地方!!)

  

虽然Thickbox有它的一天,但它不再维护,所以我们建议你使用一些替代方案