0

我有一个初学者问题。我有“菜单”,菜单是样式表,并且在 jQuery 中获得了使菜单移动的代码。我的问题是,为什么我不能在我的代码中使用 $this 变量?我是 jQuery 的大初学者,所以请耐心等待。我会很高兴得到任何答案。

$(document).ready(function(){
    $('.item').hover(function(){
        $($this).stop().animate({paddingLeft: '20px'}, "slow");
}, function(){
        $($this).stop().animate({paddingLeft: '0px'}, "slow");
    });
});

我的代码:jsFiddle

4

5 回答 5

11

它应该是$(this)

于 2013-04-20T20:54:12.067 回答
2

The $ prefix (in Javascript/jQuery code) before a variable is typically a convention used to indicate that the variable is a jQuery object (as opposed to a plain Javascript one). If you've seen it before, it's just like any regular variable.

You should use $(this) instead, which 'wraps' this in a jQuery object.

于 2013-04-20T20:56:53.330 回答
2

人们经常使用$this缓存$(this),这样他们就不必重复启动 jQuery 对象,这很昂贵。

$this = $(this)
$this.stop()
$this.animate()
// etc...

这是按约定完成的,$javascript中的字符没有特殊含义。想我会提到,因为似乎没有其他人提到过原因。

于 2013-04-20T21:04:18.927 回答
0

用这个

$(document).ready(function(){
    $('.item').hover(function(){
        $(this).stop().animate({paddingLeft: '20px'}, "slow");
    }, function(){
        $(this).stop().animate({paddingLeft: '0px'}, "slow");
    });
});
于 2013-04-20T21:02:51.640 回答
0

$this并且this不一样。在开发中,当我们编写为var $this = $(this)比它成为一个 jQuery 对象。$this表示this目前我们有一个 jQuery 对象。这只是为了参考,您可以使用任何其他变量,因为 $this 不是必需的。您可以编写 vat$that = $(this)并使用它,它的行为将相同。

于 2013-04-20T21:04:25.147 回答