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

时间:2010-02-23 04:46:31

标签: jquery

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

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

例如,我该如何转动

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

这样的事情

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

function ElementClicked(???){
  ???.addCss('clicked');
}

谢谢!

4 个答案:

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