我看到的所有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.