函数$.(this)
后不能重新声明吗?$.click()
因为这些似乎都不起作用:
$(this) = $(this).find('span');
var $(this) = $(this).find('span');
您只能声明var foo
whenfoo
是合法标识符。
$(this)
是调用$
以参数命名的函数的结果,this
因此它在声明中是不合法的。
你也不应该覆盖this
- 它会在未来引起很多头疼!
如果你想要一个用于存储 jQuery 版本的局部变量,this
那么一个常见的约定是:
var $this = $(this);
var $span = $this.find('span');
其中(完全合法,但有时不赞成)$
前缀让您记住该变量是一个 jQuery 对象,而不是一个普通的 DOM 元素。
该约定还允许您发现这样做的浪费(但常见)错误:
var jqobj = $(myobj)
when已经myobj
是一个 jQuery 对象。
该表达式$(this)
不是一个变量声明,而是一个表达式。如果要重新声明某些内容,则需要将其存储在变量中
var saved = $(this);
saved = $(this).find('span');
最终版本有效的原因是您将其分配给实际标识符。
$('some').on('click', function() {
var refrence = $(this);
var span = refrence.find('span')
// to override the $this you can use
refrence = refrence.find('span');
});