3

我正在使用fancybox,我想在fancybox 执行之前获取元素类。所以我有:

$(".agent-file-popup").fancybox({
    'onStart': function () {
        console.log($(this).attr('class'));
        console.log($(".agent-file-popup").attr('class'));
        return true;
    }
});

第一个日志输出“未定义”,但第二个日志输出正确的类。为什么我不能在这种情况下使用“this”作为元素?

4

2 回答 2

3

$(this)是一种非常流行的结构来指示当前元素是焦点,它可以在事件和选择器函数中使用。这等同于this由 jQuery 函数包装的 JavaScript 构造,以提供对 jQuery 函数的访问。

$(".user").click(function() {
    //Here $(this) will represent the element that was click with class .user
});

插件通常是作为 jQueryjQuery()功能的扩展开发的,它们几乎不负责检测当前元素。

因此,当您初始化插件时,它$(this)可能很容易代表什么。

Fancybox 有办法获取当前元素。

onstart: function(itemArray, selectedIndex, selectedOpts){
 // selectedIndex holds the current selected box on itemArray as the collection object.
}
于 2013-03-09T22:26:10.803 回答
0

尝试这个:

$(".agent-file-popup").fancybox({
        'onStart' : function() {
           console.log($(this.element).attr('class'));
           console.log($(".agent-file-popup").attr('data-paid'));
            return true;
        }
    });
于 2013-03-09T22:20:46.233 回答