正如你所看到的,this
有setTimeout()
內部有不同的含義。
一種解決方案是存儲在一個變量的this
正確的值,並在您在通過匿名函數引用它。
$(function() {
$('li a').click(function() {
$(this).parent().css('background-position','left top');
var th = this;
window.setTimeout(function() {
$(th).css('font-size','40px');
},1000);
});
});
另一種選擇是使用jQuery的$.proxy()
它保留的this
值爲你。
$(function() {
$('li a').click(function() {
$(this).parent().css('background-position','left top');
window.setTimeout($.proxy(function() {
$(this).css('font-size','40px');
}, this)
,1000);
});
});
否則,您可以創建一個閉包。
$(function() {
$('li a').click(function() {
(function(th) {
$(th).parent().css('background-position','left top');
window.setTimeout(function() {
$(th).css('font-size','40px');
}
,1000);
})(this);
});
});
Johnny - 請記住,單擊該答案旁邊的複選標記以「接受」答案。你和那個回答得到信譽點的人都是。 :o) – user113716 2010-08-17 22:59:23