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”)