Javascript jQuery$(this.attr('id')返回null

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

因此,我在网页的表格中有一个图像。图像的id为0055,它所在的单元格的id为0055Thumb。如果我在Javascript中添加以下代码:

$(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 ...
    });
});