2012-04-04 3 views
0

Wie können wir universelle Lichtbox machen i gleichen Code für alle Licht-Box-Funktion auf der Seite bedeuten hier JQueryjquery: wie man mehrere Leuchtkasten mit dem gleichen jquery Code baut?

$(document).ready(function() { 

     $('.lightbox').click(function() { 
      $('.backdrop, .box').animate({ 
       'opacity': '.50' 
      }, 300, 'linear'); 
      $('.box').animate({ 
       'opacity': '1.00' 
      }, 300, 'linear'); 
      $('.backdrop, .box').css('display', 'block'); 
     }); 

     $('.close').click(function() { 
      close_box(); 
     }); 

     $('.backdrop').click(function() { 
      close_box(); 
     }); 

    }); 

    function close_box() { 
     $('.backdrop, .box').animate({ 
      'opacity': '0' 
     }, 300, 'linear', function() { 
      $('.backdrop, .box').css('display', 'none'); 
     }); 

} 

DEMO

+2

Bewerben gleichen Klassen „Leuchtkasten“ und andere CSS-Klassen, wo auch immer Sie verwenden. –

+0

@SivaCharan werfen Sie einen Blick auf die Demo http://jsfiddle.net/sweetmaanu/nBYvH/3/ – Muhammed

Antwort

1

Ihr Skript weiß nicht, welche Lightbox hochgezogen werden soll, weil Sie nie eine angeben. Eine Möglichkeit, den Leuchtkasten festzulegen, besteht darin, den Leuchtkasten id in einem der Attribute <a> festzulegen. Ziehen Sie dann bei einem Klick den Wert dieses Attributs und die Referenz mit $("#valuePulledFromAttribute") anstelle des generischen $('.backdrop, .box'), den Sie jetzt verwenden.

konnte ich mit einer Gabel kein HTML5 erstellen: http://jsfiddle.net/J6ee5/2/

$(document).ready(function() { 

$('.lightbox').click(function() { 
    var thisBox = $(this).attr("name"); 
    console.log(thisBox); 
    $('.backdrop,.' + thisBox).animate({ 
     'opacity': '.50' 
    }, 300, 'linear'); 
    $('.box').animate({ 
     'opacity': '1.00' 
    }, 300, 'linear'); 
    $('.backdrop,.' + thisBox).css('display', 'block'); 
}); 

$('.close').click(function() { 
    close_box(); 
}); 

$('.backdrop').click(function() { 
    close_box(); 
}); 

function close_box() { 
    $('.backdrop,.box').animate({ 
     'opacity': '0' 
    }, 300, 'linear', function() { 
     $('.backdrop,.box').css('display', 'none'); 
    }); 
}​ 
}); 
0

Eine Möglichkeit ist, Daten zu verwenden, als Selektoren Attribute http://jsfiddle.net/Q676T/1/

$(document).ready(function() { 

    $('.lightbox').click(function() { 
     var dataTag = $(this).data('tag'); 
     $('.backdrop') 
      .animate({'opacity': '.50'}, 300, 'linear') 
      .css('display', 'block'); 

     $('.box[data-tag='+dataTag+']') 
      .animate({'opacity': '1'}, 300, 'linear') 
      .css('display', 'block');  
    }); 

    $('.close, .backdrop').click(function() { 
     $('.backdrop, .box') 
      .animate({'opacity': '0'}, 300, 'linear', 
        function(){ $(this).css('display', 'none');}) 

    }); 
}); 

​ 
+0

zeigt es gleiche Lichtkasten, wenn Sie einen der zweiten klicken – Muhammed

+0

Ist das nicht ein HTML5-Attribut und nicht mit einigen Browsern kompatibel? – VictorKilo

+0

Ich musste eine Bearbeitung auf jsfiddle machen, vielleicht ging es nicht durch, ich fügte das JavaScript, das ich oben geändert habe, und ich machte beide Boxen Klassenbox – Mike

Verwandte Themen