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