FancyBox, получение ATTR элемента, нажатого

У меня есть следующие строки кода:

    $("a.quickview").fancybox({
        ajax : {
            type    : "POST",
            data    : 'itemID=' + $(this).attr("name")
        }
    });

Что является обязательным для:

<a name="614" class="quickview" href="/URL/index.cfm">quick view</a>

Я хочу, чтобы данные отправлялись как itemID = 614, но $(this).attr( "name" ) возвращается как undefined? Что я делаю неправильно?

Спасибо

Ответы

Ответ 1

Если вы используете Fancybox 2.0, вы можете сделать это:

$("a.quickview").fancybox({
    ajax : {
        type    : "POST",
        data    : 'itemID=' + $(this.element).attr("name")
    }
});]

Источник: фрагмент кода из fancyBox Github issue (это работает) = >

$(".fancybox").fancybox({
  beforeShow : function() {
    this.title = $(this.element).attr('fancybox-title');
  }
});

Ответ 2

То, как вы его написали, $(this) - это не то, что вы ожидаете. this в этом контексте не нажимается a, но все this при запуске $("a.quickview").fancybox({...}).

Используйте этот код вместо

$("a.quickview").each(function() {
    var a = $(this);
    a.fancybox({
        ajax : {
            type    : "POST",
            data    : 'itemID=' + a.attr("name");
        }
    });
});

или если есть только один a.quickview, вы хотите связать fancybox, чтобы использовать этот более простой код

var a = $("a.quickview");
a.fancybox({
    ajax : {
        type    : "POST",
        data    : 'itemID=' + a.attr("name");
    }
});

Ответ 3

Это сделало это для меня:

onComplete: функция (экземпляр, слайд) {

// Clicked element
console.info( slide.opts.$orig );

}