jQuery:如何将$(this)作为函数参数传递?

Axi*_*ili 2 jquery

我看到的所有jQuery示例都具有内联函数.

如果函数很长,或者函数是可重用的,我可能想要分离函数.

例如,我该怎么做呢

$('#myElement').click(function(){
  $(this).addCss('clicked');
})
Run Code Online (Sandbox Code Playgroud)

这样的事情

$('#myElement').click(ElementClicked($(this))

function ElementClicked(???){
  ???.addCss('clicked');
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

dec*_*eze 10

这不起作用:

$('#myElement').click(ElementClicked($(this)));
Run Code Online (Sandbox Code Playgroud)

这是执行功能ElementClicked()与任何this在写作的时候,并绑定返回值ElementClicked()click事件.在这种情况下,什么都没有.

您需要函数传递给click事件,如下所示:

$('#myElement').click(function () { ElementClicked($(this)); });
Run Code Online (Sandbox Code Playgroud)

这使得(n匿名)函数将被绑定到click事件,并且函数ElementClicked()在运行,传递时调用this.该功能ElementClicked可以定义为:

function ElementClicked(elem) {
  elem.addClass('clicked');
}
Run Code Online (Sandbox Code Playgroud)

正如您将注意到的,this在绑定到事件的函数内部将是单击的元素.因此,不是使函数包装器调用传递元素的函数,而是可以像这样缩写它:

$('#myElement').click(ElementClicked);

function ElementClicked() {
  $(this).addClass('clicked');
}
Run Code Online (Sandbox Code Playgroud)

请注意,函数传递给click()变量而不是立即执行,因为()它后面没有括号.

顺便说一句,你可能意味着addClass而不是addCss.