2012-04-05 12 views
2

Ich verwende jQuery Blinds Slideshow als Bild Slider. Ich möchte das erste gleitende Bild auf http://google.com umleiten, wenn ich darauf klicke. Ich benutze a HTML-Tag wie folgt aus:jQuery Slider umleiten das Bild

<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> 

, aber es funktioniert nicht.
Meine Frage ist, wie kann ich das erste gleitende Bild auf google.com umleiten, wenn ich darauf klicke?
Vielen Dank im Voraus.

Antwort

1

Hier ist etwas schnell und schmutzig Ich kochte die ursprünglichen jquery-Jalousien Modifizierung auf. Setzen Sie es in eine neue JS-Datei und nennen Sie es jquery.blinds-0.9-with-hyperlinks.js oder etwas und fügen Sie es anstelle des aktuellen jquery-blinds-Codes ein.

Es sollte mit dem HTML funktionieren, das Sie oben bekanntgaben. Es prüft einfach, ob eines der Bilder in ein "" -Tag eingeschlossen ist, und wenn dies der Fall ist, wird das Bild bei Klick auf diesen Link umgeleitet.

/*! 
* 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

danke, mann, sehr viel!) – user1272724

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> 

Oder

<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

Sorry, aber diese funktionieren nicht für dieses Plugin. Wenn ich den Code für das Bild versuche, das nicht im Slider ist, funktioniert es, aber wenn ich diesen Code für das Bild im Slider ausprobiere, funktioniert es nicht :(Könnten Sie dieses Plugin herunterladen und es bitte ausprobieren? – user1272724

+0

Sieht aus wie das Bild hier funktioniert: http://jsfiddle.net/5aLZG/ –

+0

Sie nicht js Funktion enthalten sind, die Schieber ermöglicht wird \t $ (Fenster) .load (function() { \t \t // beginnen die Diashow \t \t $ ('. slideshow'). blinds(); \t}) – user1272724