2016-11-14 3 views
-1

Я пытаюсь выяснить класс элемента, когда завис над, и я получаю сообщение об ошибке консолиПопытка передать «это» в качестве аргумента

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); 
}); 

Не знаете, как пройти «это» в качестве аргумента. Любая помощь оценивается.

ответ

4

Вы можете проходthis, используя call метод:

findClass.call(this); 

Кто-то скоро сказать также работает с apply. Они отличаются только тем, как передавать реальные аргументы функции (в случае необходимости).

Ознакомьтесь с документацией по двум.

И добавить еще один метод того же семейства, с bind вы также можете достичь этого:

findClass.bind(this)(); 
3

Вы все еще должны позволить функции знать, что параметр:

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

Использование call или apply функцию. Вот немного модифицированный пример, демонстрирующий, как вы можете это сделать:

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

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