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

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

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

例如,我该怎么做呢

$('#myElement').click(function(){ $(this).addCss('clicked'); }) 

变成这样的东西

 $('#myElement').click(ElementClicked($(this)) function ElementClicked(???){ ???.addCss('clicked'); } 

谢谢!

这不起作用:

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

这是在执行函数ElementClicked()时执行的任何操作,并将ElementClicked()返回值绑定到click事件。 在这种情况下,什么都没有。

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

 $('#myElement').click(function () { ElementClicked($(this)); }); 

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

 function ElementClicked(elem) { elem.addClass('clicked'); } 

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

 $('#myElement').click(ElementClicked); function ElementClicked() { $(this).addClass('clicked'); } 

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

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

这只是一个表达; 你传递它就像你传递(x + 1)或其他什么。 在你的函数中给它一个名字,你很高兴:

 function elementClicked(banana) { banana.addClass('clicked'); } 
 $('#myElement').click(function(){ ElementClicked($(this)); }) function ElementClicked(el){ el.addCss('clicked'); } 

最好分开

document.elementByID( “DIV1”)

$( “#DIV1”)

所以我更喜欢附上’j’

jElement = $(“#div1”)

element = document.elementByID(“div1”)