2012-04-04 9 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クラスを適用します。 –

+0

@SivaCharanデモを見てくださいhttp://jsfiddle.net/sweetmaanu/nBYvH/3/ – Muhammed

答えて

1

あなたのスクリプトでは、決して指定しないので、どのライトボックスをプルアップするのかわかりません。ライトボックスを設定できる1つの方法は、<a>属性の1つにライトボックスidを指定することです。次に、クリックすると、今使用している汎用$('.backdrop, .box')ではなく、その属性と参照の値を引き出して$("#valuePulledFromAttribute")とします。

私はHTML5を使用していないフォークを作成することができた:あなたが使用whereever 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

2番目のものをクリックすると同じライトボックスが表示されます – Muhammed

+0

これはHTML5属性ではなく、一部のブラウザと互換性がありませんか? – VictorKilo

+0

私はjsfiddleで編集しなければならなかったかもしれません。上記のJavaScriptを貼り付けて、両方のボックスクラスボックスを作成しました。 – Mike

関連する問題