0

在 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 click 函数下调用 changeImg() ,例如:

$(".someClass .type1").click(function(){
        $(".someClass .type1").html("<img src='image/2.png'>");
        changeImg();
});

但是,通过这种方式, $(this) 将是“未定义的”,而不是被点击的那个。有没有办法让它像全局变量一样可用?

谢谢!

4

3 回答 3

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);
});
于 2013-10-01T14:09:30.640 回答
3

您可以这样做来设置上下文:

changeImg.call(this);

MDNFunction.prototype.call

于 2013-10-01T14:10:13.727 回答
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'>");
}
于 2013-10-01T14:09:34.507 回答