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 );
}