2012-04-04 39 views
0

我們怎樣才能使通用的燈箱我的意思是在 這裏頁面中所有燈箱功能相同的代碼JQuery的jquery:如何使用相同的jQuery代碼構建多個燈箱?

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

應用同一類的「收藏夾」等CSS類,等。無論您使用。 – 2012-04-04 16:19:16

+0

@SivaCharan看看演示http://jsfiddle.net/sweetmaanu/nBYvH/3/ – Muhammed 2012-04-04 16:25:12

回答

1

您的腳本不知道要將哪個燈箱拉起來,因爲您從未指定過燈箱。您可以設置燈箱的一種方法是在<a>屬性之一中指定燈箱id。然後,單擊時,將該屬性的值與$("#valuePulledFromAttribute")相比較,而不是您現在使用的通用$('.backdrop, .box')

我能夠創建一個使用HTML5沒有叉子: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

一種選擇是使用盡可能選擇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

它顯示相同的燈箱,當點擊一個第二個 – Muhammed 2012-04-04 16:36:00

+0

是不是一個HTML5屬性和不兼容的一些瀏覽器? – VictorKilo 2012-04-04 16:39:01

+0

我必須在jsfiddle上進行編輯,也許它沒有通過,我粘貼上面修改過的JavaScript,並且我製作了兩個箱子類框 – Mike 2012-04-04 16:40:26