3

函数$.(this)后不能重新声明吗?$.click()因为这些似乎都不起作用:

$(this) = $(this).find('span');
var $(this) = $(this).find('span');
4

3 回答 3

4

您只能声明var foowhenfoo是合法标识符

$(this)调用$以参数命名的函数的结果,this因此它在声明中是不合法的。

你也不应该覆盖this- 它会在未来引起很多头疼!

如果你想要一个用于存储 jQuery 版本的局部变量,this那么一个常见的约定是:

var $this = $(this);
var $span = $this.find('span');

其中(完全合法,但有时不赞成)$前缀让您记住该变量是一个 jQuery 对象,而不是一个普通的 DOM 元素。

该约定还允许您发现这样做的浪费(但常见)错误:

var jqobj = $(myobj)

when已经myobj是一个 jQuery 对象。

于 2012-05-23T15:28:58.373 回答
3

该表达式$(this)不是一个变量声明,而是一个表达式。如果要重新声明某些内容,则需要将其存储在变量中

var saved = $(this);
saved = $(this).find('span');

最终版本有效的原因是您将其分配给实际标识符。

于 2012-05-23T15:29:12.590 回答
2
$('some').on('click', function() {
  var refrence = $(this);
  var span = refrence.find('span')
  // to override the $this you can use
  refrence = refrence.find('span');
});
于 2012-05-23T15:29:15.150 回答