Javascript 美元(this)如何在全球范围内可用

Javascript 美元(this)如何在全球范围内可用,javascript,jquery,global-variables,this,local-variables,Javascript,Jquery,Global Variables,This,Local Variables,在JQuery中,$(this)似乎只在本地工作 举个简单的例子: $(".someClass .type1").click(function(){ $(".someClass .type1").html("<img src='image/2.png'>"); $(this).html("<img src='images/img.png'>"); }); $(".otherClasses").click(function(){ $(".other

在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'>");
});
$(.someClass.type1”)。单击(函数(){
$(“.someClass.type1”).html(“”);
$(this.html(“”);
});
$(“.otherClasses”)。单击(函数(){
$(“.otherClasses.type1”).html(“”);
$(this.html(“”);
});
理想情况下,我想编写如下函数:

function changeImg () {
   $(this).html("<img src='images/img.png'>");
}
函数更改img(){
$(this.html(“”);
}
然后在jquery单击函数下调用changeImg(),如:

$(".someClass .type1").click(function(){
        $(".someClass .type1").html("<img src='image/2.png'>");
        changeImg();
});
$(.someClass.type1”)。单击(函数(){
$(“.someClass.type1”).html(“”);
changeImg();
});
但是,通过这种方式,$(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);
});
功能更改img(el){
$(el).html(“”);
}
$(“.someClass.type1”)。单击(函数(){
$(“.someClass.type1”).html(“”);
改变(这个);
});
使用

你的代码变成了

$(".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'>");
}
$(.someClass.type1”)。单击(函数(){
$(“.someClass.type1”).html(“”);
改变(这个);//把这个传给这里
});
功能变更(要素){
$(elem).html(“”);
}

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

changeImg.call(this);

changeImg.call(this);