FancyBox, Получение ATTR предмета, на который нажали - PullRequest
13 голосов
/ 28 марта 2010

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

    $("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") возвращается как неопределенное? Что я делаю не так?

Спасибо

Ответы [ 3 ]

15 голосов
/ 06 сентября 2012

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

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

Источник: Фрагмент кода от fancyBox Github, выпуск (это работает) =>

$(".fancybox").fancybox({
  beforeShow : function() {
    this.title = $(this.element).attr('fancybox-title');
  }
});
4 голосов
/ 29 марта 2010

То, как вы это написали $(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");
    }
});
2 голосов
/ 13 марта 2017

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

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

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...