0

prettyPhoto changePictureCallback関数で、現在開いているライトボックスを知りたいのですが。現在、私はこれを行っています:

$("a[rel^='prettyPhoto']").prettyPhoto({
  deeplinking : false,
  counter_separator_label : ' of ',
  gallery_markup : '',
  social_tools : '',
  slideshow : false,
  changepicturecallback: function(){
    //do stuff
    id_to_find = $(".active_lightbox").attr('href');
  },
  opacity : 0.29
}).click(function(){
  $(this).addClass('active_lightbox');
});

このように、アンカーがクリックされると、active_lightboxがその上に配置されます。ただし、これはあまりうまく機能しません。複数のactive_lightbox要素を持つことになりかねません。また、ライトボックスギャラリー内の次のボタンを使用すると、そのクラスが「active_lightbox」に配置されません。
では、jquery / jsで現在開いているライトボックスを確認するにはどうすればよいですか?

4

1 に答える 1

1

ここにいくつかのオプションがありますが、私に飛び出すもの:

ギャラリーや写真の番号は<a rel="prettyPhoto##">どこにありますか?##このような場合は、次のようなものをお勧めします。

$("a[rel^='prettyPhoto']").each(function(index, elm)
  var $elm = $(elm);
  // an arbitrary ID based on its order in the DOM
  var photo_id = index;
  // returns the ## from rel="prettyPhoto##"
  var gallery_id = $(elm).attr('rel').replace("prettyPhoto", ""); 
  $elm.prettyPhoto({
    ...
    changepicturecallback: function(){
      // do stuff
      // photo_id
      // gallery_id
      // elm and $elm
    },
    ...
  });

または、もう少しマークアップを追加することもできますが、data-タグを使用することでより正確になります。

資力

于 2012-08-14T00:37:44.477 に答える