2012-04-05 92 views
2

我使用jQuery Blinds Slideshow作爲圖像滑塊。當我點擊它時,我想將第一張滑動圖像重定向到http://google.com。我使用a這樣的html標籤:jQuery滑塊重定向圖像

<div class="slideshow"> 
    <ul> 
     <li><a href="http://google.com"><img src="lemons/1.jpg" alt="lemon" /></a></li> 
     <li><img src="lemons/2.jpg" alt="lemon tea" /></li> 
    </ul> 
</div> 

<a href="#" onclick="$('.slideshow').blinds_change(0)">1</a> 
<a href="#" onclick="$('.slideshow').blinds_change(1)">2</a> 

但它不起作用。
我的問題是,我點擊它時如何將第一張滑動圖片重定向到google.com?
在此先感謝。

回答

1

這裏是東西快速和骯髒的我熟了修改原始jQuery的百葉窗。 把它放在一個新的JS文件中,並將其稱爲jquery.blinds-0.9-with-hyperlinks.js或其他東西,並將其包含在當前的jquery-blinds代碼中。

它應該與您在上面發佈的HTML一起使用。它只是檢查是否有任何圖像包裹在''標籤中,如果是,則在點擊時將圖像重定向到該鏈接。

/*! 
* jQuery Blinds 
* http://www.littlewebthings.com/projects/blinds 
* 
* Copyright 2010, Vassilis Dourdounis 
* 
* Permission is hereby granted, free of charge, to any person obtaining a copy 
* of this software and associated documentation files (the "Software"), to deal 
* in the Software without restriction, including without limitation the rights 
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
* copies of the Software, and to permit persons to whom the Software is 
* furnished to do so, subject to the following conditions: 
* 
* The above copyright notice and this permission notice shall be included in 
* all copies or substantial portions of the Software. 
* 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
* THE SOFTWARE. 
* 
* Modified by Thomas Antony (http://www.thomasantony.net) on 06-Apr-2012 
* Added image hyperlinking functionality 
* 
*/ 
(function($){ 

    $.fn.blinds = function (options) { 

     $(this).find('li').hide(); 
     $(this).addClass('blinds_slideshow'); 

     settings = {}; 
     settings.tile_orchestration = this.tile_orchestration; 

     settings.h_res = 12; 
     settings.v_res = 1; 

     settings.width = $(this).find('li:first').width(); 
     settings.height = $(this).find('li:first').height(); 

     jQuery.extend(settings, options); 

     tiles_width = settings.width/settings.h_res; 
     tiles_height = settings.height/settings.v_res; 

     // Get image list 
     blinds_images = []; 
     blinds_links = []; 

     $(this).find('img').each(function (i, e) { 
      blinds_images[blinds_images.length] = {'title': e.alt, 'src': e.src} 
      // Code added to allow for linking functionality -- Thomas 
      if($(e).parent().is('a') && $(e).parent().attr('href') != undefined) 
      { 
       blinds_links[i] = $(e).parent().attr('href'); 
      }else{ 
       blinds_links[i] = ""; 
      } 
     }); 

     // Create blinds_container 
     $(this).append('<div class="blinds_container"></div>'); 

     blinds_container = $(this).find('.blinds_container'); 
     blinds_container.css({ 
      'position' : 'relative', 
      'display' : 'block', 
      'width'  : settings.width, 
      'height' : settings.height, 
//   'border' : '1px solid red', // debuging 
      'background': 'transparent url("' + blinds_images[1]['src'] + '") 0px 0px no-repeat' 
     }); 


     // Setup tiles 
     for (i = 0; i < settings.h_res; i++) 
     { 
      for (j = 0; j < settings.v_res; j++) 
      { 
       if (tile = $(this).find('.tile_' + i + '_' + j)) 
       { 
        h = '<div class="outer_tile_' + i + '_' + j + '"><div class="tile_' + i + '_' + j + '"></div></div>'; 
        blinds_container.append(h); 
        outer_tile = $(this).find('.outer_tile_' + i + '_' + j); 
        outer_tile.css({ 
         'position' : 'absolute', 
         'width'  : tiles_width, 
         'height' : tiles_height, 
         'left'  : i * tiles_width, 
         'top'  : j * tiles_height 
        }) 

        tile = $(this).find('.tile_' + i + '_' + j); 
        tile.css({ 
         'position' : 'absolute', 
         'width'  : tiles_width, 
         'height' : tiles_height, 
         'left'  : 0, 
         'top'  : 0, 
//      'border' : '1px solid red', // debuging 
         'background': 'transparent url("' + blinds_images[0]['src'] + '") -' + (i * tiles_width) + 'px -' + (j * tiles_height) + 'px no-repeat' 
        }) 

        jQuery.data($(tile)[0], 'blinds_position', {'i': i, 'j': j}); 
       } 
      } 
     } 

     jQuery.data(this[0], 'blinds_config', { 
      'h_res': settings.h_res, 
      'v_res': settings.v_res, 
      'tiles_width': tiles_width, 
      'tiles_height': tiles_height, 
      'images': blinds_images, 
      'img_index': 0, 
      'change_buffer': 0, 
      'tile_orchestration': settings.tile_orchestration 
     }); 


     // Add redirection code for the links -- Thomas 
     var container = this[0]; // Need this to get config data within click handler 
     jQuery.data(this[0], 'blinds_links', blinds_links); 

     blinds_container.click(function(){ 
      var config = jQuery.data(container, 'blinds_config'); 
      if(blinds_links[config.img_index] != "") 
      { 
       window.location.href = blinds_links[config.img_index] 
      } 
     }); 
     $(this).update_cursor(); // Set correct cursor for first image -- Thomas 
     // Modified code ends 

    } 

    $.fn.blinds_change = function (img_index) { 

     // reset all sprites 
     config = jQuery.data($(this)[0], 'blinds_config'); 
     for (i = 0; i < config.h_res; i++) 
     { 
      for (j = 0; j < config.v_res; j++) { 
       $(this).find('.tile_' + i + '_' + j).show().css('background', 'transparent ' + 'url("' + config.images[config.img_index]['src'] + '") -' + (i * config.tiles_width) + 'px -' + (j * config.tiles_height) + 'px no-repeat'); 
      } 
     } 

     $(this).children('.blinds_container').css('background', 'transparent url("' + blinds_images[img_index]['src'] + '") 0px 0px no-repeat'); 

     config.img_index = img_index; 
     jQuery.data($(this)[0], 'blinds_config', config); 

     for (i = 0; i < config.h_res; i++) 
     { 
      for (j = 0; j < config.v_res; j++) { 
       t = config.tile_orchestration(i, j, config.h_res, config.v_res); 

       config = jQuery.data($(this)[0], 'blinds_config'); 
       config.change_buffer = config.change_buffer + 1; 
       jQuery.data(this[0], 'blinds_config', config); 

       $(this).find('.tile_' + i + '_' + j).fadeOut(t, function() { 
        blinds_pos = jQuery.data($(this)[0], 'blinds_position'); 
        config = jQuery.data($(this).parents('.blinds_slideshow')[0], 'blinds_config'); 

        $(this).css('background', 'transparent ' + 'url("' + config.images[config.img_index]['src'] + '") -' + (blinds_pos.i * config.tiles_width) + 'px -' + (blinds_pos.j * config.tiles_height) + 'px no-repeat'); 

        config.change_buffer = config.change_buffer - 1; 
        jQuery.data($(this).parents('.blinds_slideshow')[0], 'blinds_config', config); 

        if (config.change_buffer == 0) { 
//      $(this).parent().parent().children().children().css('width', config.tiles_width); 
         $(this).parent().parent().children().children().show(); 
        } 

       }); 
      } 
     } 
     $(this).update_cursor(); 
    } 

    $.fn.tile_orchestration = function (i, j, total_x, total_y) { 
     return (Math.abs(i-total_x/2)+Math.abs(j-total_y/2))*100; 
    } 

    // Function to update cursor to a "hand" if image is linked -- Thomas 
    $.fn.update_cursor = function() 
    { 
     // Change cursor if image is hyperlinked 
     var config = jQuery.data($(this)[0], 'blinds_config'); 
     var blinds_links = jQuery.data($(this)[0], 'blinds_links'); // get links from saved data 

     console.log(config.img_index); 
     if(blinds_links[config.img_index] != "") 
     { 
      $(this).find('.blinds_container').css('cursor','pointer'); 
     }else{ 
      $(this).find('.blinds_container').css('cursor','auto'); 
     } 
    } 

})(jQuery); 
+0

非常感謝,男人!) – user1272724 2012-04-06 09:17:35

0
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('a:first').click(function(){ 
     window.location.href = 'http://google.com/'; 
    }); 
}); 
</script> 

或者

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('div.slideshow img:first').click(function(){ 
     window.location.href = 'http://google.com/'; 
    }); 
}); 

+0

抱歉,這些不適用於此插件。當我嘗試你的代碼爲不在滑塊中的圖像時,它確實有效,但是當我爲滑塊中的圖像嘗試此代碼時,它不起作用:(可以下載此插件並嘗試它嗎? – user1272724 2012-04-05 19:08:09

+0

看起來像圖像在這裏工作:http://jsfiddle.net/5aLZG/ – 2012-04-05 22:40:38

+0

你沒有包括js功能,這是啓用滑塊\t $(window).load(function(){ \t \t //開始幻燈片 \t \t $('。slideshow')。blinds(); \t}) – user1272724 2012-04-06 09:18:49