在JQuery中,似乎$(this)仅在本地工作。
举个简单的例子:
$(".someClass .type1").click(function(){
$(".someClass .type1").html("<img src='image/2.png'>");
$(this).html("<img src='images/img.png'>");
});
$(".otherClasses").click(function(){
$(".otherClasses .type1").html("<img src='image/2.png'>");
$(this).html("<img src='images/img.png'>");
});
理想情况下,我想写一个这样的函数:
function changeImg () {
$(this).html("<img src='images/img.png'>");
}
然后在jquery点击函数下调用changeImg(),如:
$(".someClass .type1").click(function(){
$(".someClass .type1").html("<img src='image/2.png'>");
changeImg();
});
然而,通过这种方式,$(this)将是'undefined'而不是被点击的那个。有没有办法让它像全局变量一样可用?
谢谢!
答案 0 :(得分:3)
将this
作为参数传递给您的函数:
function changeImg (el) {
$(el).html("<img src='images/img.png'>");
}
$(".someClass .type1").click(function(){
$(".someClass .type1").html("<img src='image/2.png'>");
changeImg(this);
});
答案 1 :(得分:3)
答案 2 :(得分:1)
使用
changeImg(this); // pass this here
您的代码变为
$(".someClass .type1").click(function(){
$(".someClass .type1").html("<img src='image/2.png'>");
changeImg(this); // pass this here
});
function changeImg (elem) {
$(elem).html("<img src='images/img.png'>");
}