试图通过"这个"作为论据

时间:2016-11-14 19:25:55

标签: javascript jquery function class this

我试图找到一个元素的类,当我盘旋,我得到一个

TypeError: undefined is not an object (evaluating 'classString.split')

控制台错误。这是我的代码。

function findClass(){
    var classString = $(this).attr('class');
    var myClass = classString.split(' ')[0];
    alert(myClass);
}

//blog

$(".img2.blog").mouseenter(function() {
    $('.img2.blog').css('opacity', '0');
    $('.img1.blog').removeClass('hidden');

    findClass(this);

});

//albums

$(".img2.albums").mouseenter(function() {
    $('.img2.albums').css('opacity', '0');
    $('.img1.albums').removeClass('hidden');

    findClass(this);
});

//videos

$(".img2.videos").mouseenter(function() {
    $('.img2.videos').css('opacity', '0');
    $('.img1.videos').removeClass('hidden');

    findClass(this);
});

//contact

$(".img2.contact").mouseenter(function() {
    $('.img2.contact').css('opacity', '0');
    $('.img1.contact').removeClass('hidden');

    findClass(this);
});

不确定如何通过"这个"作为一个论点。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:4)

您可以使用call方法传递 this

findClass.call(this);

很快人们会说它也适用于apply。它们只是如何将真实参数传递给函数(如果需要的话)。

查看两者的文档。

要添加同一家庭的另一种方法,使用bind,您也可以实现它:

findClass.bind(this)();

答案 1 :(得分:3)

你仍然需要让函数知道参数是什么:

function findClass(self) {
    var classString = $(self).attr('class');
    var myClass = classString.split(' ')[0];
    alert(myClass);
}

答案 2 :(得分:0)

使用callapply功能。 这是一个稍微修改过的示例,演示了如何执行此操作:

function findClass(){
    var classString = this['class'];
    var myClass = classString.split(' ')[0];
    alert(myClass);
}

findClass.call({'class': "Hello World"})
findClass.apply({'class': "Hello World"})