jquery重新声明$(this)

时间:2012-05-23 15:27:08

标签: jquery variables this

$.(this)功能之后是否无法重新声明$.click()?因为这些似乎都不起作用:

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

3 个答案:

答案 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');
});