作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到的所有 jQuery 示例都有内联函数。
如果函数很长,或者函数是可重用的,我可能想将函数分开。
例如,我该如何转动它
$('#myElement').click(function(){
$(this).addCss('clicked');
})
变成这样的东西
$('#myElement').click(ElementClicked($(this))
function ElementClicked(???){
???.addCss('clicked');
}
谢谢!
最佳答案
这行不通:
$('#myElement').click(ElementClicked($(this)));
这正在使用编写时的 this
执行函数 ElementClicked()
,并绑定(bind) 的返回值>ElementClicked()
到 click
事件。在这种情况下什么都不是。
您需要将函数传递给点击事件,如下所示:
$('#myElement').click(function () { ElementClicked($(this)); });
这将创建一个(n 匿名)函数,该函数将绑定(bind)到 click
事件,并且该函数在运行时调用 ElementClicked()
,并传递 this
。函数 ElementClicked
可以定义为:
function ElementClicked(elem) {
elem.addClass('clicked');
}
您会注意到,绑定(bind)到事件的函数内的 this
将是被单击的元素。因此,您可以像这样缩写它,而不是创建一个调用传递元素的函数的函数包装器:
$('#myElement').click(ElementClicked);
function ElementClicked() {
$(this).addClass('clicked');
}
请注意,该函数像变量一样传递给 click()
,而不是立即执行,因为它后面没有括号 ()
。
顺便说一句,您可能指的是 addClass
而不是 addCss
。
关于jQuery:如何将 $(this) 作为函数参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316158/
我是一名优秀的程序员,十分优秀!