我试图找到一个元素的类,当我盘旋,我得到一个
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);
});
不确定如何通过"这个"作为一个论点。任何帮助表示赞赏。
答案 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)
使用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"})