我看到的所有jQuery示例都有内联函数。
如果函数很长,或者函数是可重用的,我可能想要将函数分开。
例如,我该如何转动
$('#myElement').click(function(){
$(this).addCss('clicked');
})
这样的事情
$('#myElement').click(ElementClicked($(this))
function ElementClicked(???){
???.addCss('clicked');
}
谢谢!
答案 0 :(得分:10)
这不起作用:
$('#myElement').click(ElementClicked($(this)));
这正在执行函数ElementClicked()
,其中包含this
在编写时的所有内容,并将ElementClicked()
的返回值绑定到{{1}事件。在这种情况下,什么都没有。
您需要将函数传递给click事件,如下所示:
click
这会产生一个(n匿名)函数,它将绑定到$('#myElement').click(function () { ElementClicked($(this)); });
事件,并且函数在运行时调用click
,并传递ElementClicked()
。函数this
可以定义为:
ElementClicked
正如您将注意到的,绑定到事件的函数内的function ElementClicked(elem) {
elem.addClass('clicked');
}
将是单击的元素。因此,不是使函数包装器调用传递元素的函数,而是可以像这样缩写它:
this
请注意,该函数像变量一样传递给$('#myElement').click(ElementClicked);
function ElementClicked() {
$(this).addClass('clicked');
}
而不是立即执行,因为它后面没有括号click()
。
顺便说一下,你可能指的是()
而不是addClass
。
答案 1 :(得分:2)
这只是一种表达;你传递它就像你通过(x + 1)
或其他什么。在你的函数中给它起一个名字,你就可以了:
function elementClicked(banana) {
banana.addClass('clicked');
}
答案 2 :(得分:0)
$('#myElement').click(function(){
ElementClicked($(this));
})
function ElementClicked(el){
el.addCss('clicked');
}
答案 3 :(得分:0)
最好分开
document.elementByID( “DIV1”)
$( “#DIV1”)
所以我更喜欢附上'j'
jElement = $(“#div1”)
element = document.elementByID(“div1”)