Javascript jQuery$(this.attr('id')返回null
因此,我在网页的表格中有一个图像。图像的id为0055,它所在的单元格的id为0055Thumb。如果我在Javascript中添加以下代码:Javascript jQuery$(this.attr('id')返回null,javascript,jquery,Javascript,Jquery,因此,我在网页的表格中有一个图像。图像的id为0055,它所在的单元格的id为0055Thumb。如果我在Javascript中添加以下代码: $(document).ready(function(){ $('#0055').click(function(){ click0055(); }) }) function click0055() { $('#main').attr("src", "/images/Levi/518/11518_0055_BlackPressed_Fro
$(document).ready(function(){
$('#0055').click(function(){
click0055();
})
})
function click0055()
{
$('#main').attr("src", "/images/Levi/518/11518_0055_BlackPressed_Front.png");
var curID = $(this).attr('id');
alert(curID);
}
alertcurID不应该返回0055Thumb或0055吗?我正在尝试获取对象id,以便将其传递给另一个函数。有人能告诉我我做错了什么吗?试试:
$('#0055').click(click0055);
如果从绑定到click事件的匿名函数调用click0055,它将丢失与上述方法一起传递的上下文。另一种方法是:
您可以将$this作为参数传递:
调用函数时,它不会从调用代码继承上下文。在函数中,这不再是对发生事件的元素的引用 将引用传递给函数:
$(document).ready(function(){
$('#0055').click(function(){
click0055(this);
})
})
function click0055(el) {
$('#main').attr("src", "/images/Levi/518/11518_0055_BlackPressed_Front.png");
var curID = $(el).attr('id');
alert(curID);
}
或者,使用call方法指定函数调用的上下文:
$(document).ready(function(){
$('#0055').click(function(){
click0055.call(this);
})
})
问题是这在您所称的范围内意味着什么。 下面是一个带有修复程序的JSFIDLE: 如果确实需要将该函数嵌套在anonimous函数中是可以的,但是通过将参数传递到嵌套函数中来保留对该函数的引用
function click0055(elem){
$('#main').attr("src", "/images/Levi/518/11518_0055_BlackPressed_Front.png");
var curID = $(elem).attr('id');
alert(curID);
}
$(document).ready(function(){
$('#0055').on("click",function(){
var elem = this;
click0055(elem);
// Let's say here is more code ...
});
});
窗口没有id属性。函数中的此属性与您认为的不同,因为它的调用方式不正确。console.logthis在您的click0055中,查看它们在谈论什么。或click0055.callthis;或apply@hsz您忘记执行代理函数。
$(document).ready(function(){
$('#0055').click(function(){
click0055.call(this);
})
})
function click0055(elem){
$('#main').attr("src", "/images/Levi/518/11518_0055_BlackPressed_Front.png");
var curID = $(elem).attr('id');
alert(curID);
}
$(document).ready(function(){
$('#0055').on("click",function(){
var elem = this;
click0055(elem);
// Let's say here is more code ...
});
});