如何使用;这";在这个jquery函数中
我正在尝试编写一个函数,需要在window.setTimeout中引用“this”。目前它不起作用。我怎样才能重写它使它工作?谢谢如何使用;这";在这个jquery函数中,jquery,Jquery,我正在尝试编写一个函数,需要在window.setTimeout中引用“this”。目前它不起作用。我怎样才能重写它使它工作?谢谢 $(function() { $('li a').click(function() { $(this).parent().css('background-position','left top'); window.setTimeout("$(this).css('font-size','40px');",1000)
$(function() {
$('li a').click(function() {
$(this).parent().css('background-position','left top');
window.setTimeout("$(this).css('font-size','40px');",1000);
});
});
正如您所看到的,
这个
在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 );
});
});
您需要在setTimeout调用中创建一个闭包
$(function() {
$('li a').click(function() {
var $this = $(this);
$this.parent().css('background-position','left top');
window.setTimeout(function () {
$this.css('font-size','40px');
},1000);
});
});
应该更近一点
window.setTimeout(function(){$(this).css('font-size','40px')},1000);
没有报价。它需要是一个函数。匿名函数很好,但是setTimeout()
仍然从不同的上下文调用该函数,因此这个将具有不同的含义。@Kranu-$。proxy
会处理这个问题。否则就完结了。哦,我从来没有真正了解过代理+感谢你有多种方法的回答。@Kranu-谢谢。我个人更喜欢闭包,只是感觉比较轻松,但是$.proxy()
确实可以。约翰尼-记住通过单击答案旁边的复选标记来“接受”答案。你和回答问题的人都会因此获得声誉积分:o)