FancyBox,获取所点击项目的属性值

13

我有以下代码:

    $("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,我做错了什么?

谢谢

3个回答

15

如果您正在使用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

你写的方式 $(this) 并不是你期望的。在这个上下文中,this 不是被点击的 a,而是当你运行 $("a.quickview").fancybox({...}) 时的任何 this

请使用以下代码代替

$("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");
    }
});

这里有一个快速视图列表的 <ul> 元素.... 我刚试了下代码,无论我点击哪个快速视图,它总是找到列表中第一个 <LI> 中 A 标签的 ATTR 属性,而不是我点击的那个... 有什么想法吗? - AnApprentice
“list of quickview's <ul>” 是什么意思?你的选择器中写着 a.quickview,这意味着所有具有 quickview 类的 <a> 标签。 - jitter

2
这对我来说解决了问题:

onComplete: function( instance, slide ) {

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

}


这个回答给了我所需的提示。Fancybox 3: this.opts.$orig - chongo2002

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接