所以,我在网页的表格中有一张图片。该图片的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);
}
不应警告(curID)返回" 0055Thumb"或" 0055"?我试图获取对象id,以便将其传递给另一个函数。有人能告诉我我做错了吗?
答案 0 :(得分:6)
试试:
$('#0055').click(click0055);
如果从绑定到click0055
事件的匿名函数调用click
,则会丢失使用上述方法传递的上下文。另一种方法是使用jQuery.proxy
:
$('#0055').click(function(){
$.proxy(click0055, this)();
});
答案 1 :(得分:1)
调用函数时,它不会从调用代码继承上下文。在函数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);
})
})
答案 2 :(得分:0)
您可以将$(this)作为参数传递:http://jsfiddle.net/hTfU7/
$(document).ready(function(){
$('#0055').click(function(){
click0055($(this));
})
})
function click0055($thisIsMe)
{
$('#main').attr("src", "/images/Levi/518/11518_0055_BlackPressed_Front.png");
var curID = $thisIsMe.attr('id');
alert(curID);
}
答案 3 :(得分:0)
问题是"这个"意味着你在调用它的范围。 这里有一个修复的jsfiddle:
如果你真的需要在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 ...
});
});