$(this).attr不工作

时间:2013-03-09 22:14:55

标签: jquery fancybox

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

Fancybox有办法获取当前元素。

onstart: function(itemArray, selectedIndex, selectedOpts){
 // selectedIndex holds the current selected box on itemArray as the collection object.
}

答案 1 :(得分:0)

试试这个:

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