Javascript 美元(this)如何在全球范围内可用
在JQuery中,$(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
$(".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);