0

beforeLoad コールバックを使用して、現在アクティブな fancybox リンクのクラスを取得しようとしています。

HTML の例:

<a href="example.png" class="lightbox pdf-opening">Link</a>
<a href="example2.png" class="lightbox pdf-closing">Link</a>

jQuery/Fancybox コード:

$(document).ready(function() {

    $(".lightbox").fancybox(
        {
            beforeLoad: function(){
                var pdf_type_string = $(".lightbox").eq(this.index).attr('class').split(' ').slice(-1);
                var test = pdf_type_string.toString();
                var pdf_type = test.substr(4);
                alert(pdf_type);
            },
            title: '<a class="lightbox_link_to_tickets" href="/your-visit/booking-online/">Book your tickets here</a>',
            type: 'image'
        }
    );

});

this.index は、2 番目のリンクをクリックしても (理論的には) 1 を返すはずの 2 番目のリンクをクリックしても、常に 0 を返します...

どんな助けでも大歓迎です。

ポール

解決

私にとっての解決策は次のとおりです。

$(document).ready(function() {
    $(".lightbox").fancybox(
    {
        beforeLoad: function(){
            var pdf_type_object = $(this.element).attr('class').split(' ').slice(-1);
            var pdf_type_string = pdf_type_object.toString();
            var pdf_type = pdf_type_string.substr(4);
            this.title = '<a class="lightbox_link_to_tickets" href="/your-visit/booking-online/">Book your tickets here</a> - <a class="lightbox_link_to_tickets" href="/inc/images/your-visit/timetables-and-fares/'+pdf_type+'.pdf">Downloadable PDF</a>';
        },
        type: 'image'
        }
    );  
});
4

2 に答える 2

2

次のような現在の要素にアクセスできます。

beforeLoad: function() {
    console.info( $(this.element) );
}
于 2012-05-08T11:44:48.597 に答える
0

これを試して:

var pdf_type_string = $(".lightbox").eq($(this).index(this)).attr('class')
于 2012-05-08T10:53:10.243 に答える