2012-06-20 94 views
-3

我有一個JavaScript的畫廊,它的效果很好。當我點擊一張圖片時,它會淡入並帶來我選擇的圖片,但它沒有NEXT和PREVIUS按鈕。我必須關閉那張圖片並打開另一張。 如何添加下一個和上一個按鈕? 日Thnx上一個和下一個按鈕上的JavaScript

這裏是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

檢查在第二個演示jQuery插件頁面:

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

在這裏你會看到底部的下一個和上一個按鈕。

祝你好運!


而且它是通過(在2009年的地方!!)

雖然ThickBox的有它的一天,這是不能維持下去的方式評論,所以我們建議您使用一些替代品

相關問題