Jquery 理解此逻辑中匿名函数的需要
我正在学习web开发,现在正在做jquery部分。我有一个逻辑问题,这样我就能理解语法背后的逻辑,这样我就能更好地理解它 基于这种逻辑:Jquery 理解此逻辑中匿名函数的需要,jquery,Jquery,我正在学习web开发,现在正在做jquery部分。我有一个逻辑问题,这样我就能理解语法背后的逻辑,这样我就能更好地理解它 基于这种逻辑: $(document).ready(function() { $("p").on({ mouseenter: function() { $(this).css("background-color", "yellow"); }, mouseleave: function() { $(this).css("bac
$(document).ready(function() {
$("p").on({
mouseenter: function() {
$(this).css("background-color", "yellow");
},
mouseleave: function() {
$(this).css("background-color", "pink");
},
click: function() {
$(this).css("background-color", "red");
}
})
})
.ready
之后进入()
内部,而不像其他任何类似的方法或函数:.ready(){function应该在这里?}
?我的意思是通常在()
中,你给出的是一组参数,而不是代码本身,不是吗mouseenter
之后?在事件发生之前,它无论如何都不会执行,所以为什么我必须声明匿名函数并有一组附加的花括号?我的意思是为什么我必须这样做:mouseenter:function(){
$(this.css(“背景色”、“黄色”);
}
与此相反:
mouseenter: $(this).css("background-color", "yellow");
多谢各位
1) 为什么函数在.ready
之后进入()
内部,而不像其他任何类似的方法或函数:.ready(){function应该在这里?}
?我的意思是通常在()
中,你给出的是一组参数,而不是代码本身,不是吗
这是因为您将匿名函数作为参数提供给ready
事件处理程序。然后在触发事件时调用此函数。这是回调模式,在整个jQuery中非常普遍
2) 为什么我必须声明一个匿名函数,而不能简单地将代码放在mouseenter
之后?在事件发生之前,它无论如何都不会执行,所以为什么我必须声明匿名函数并有一组附加的花括号
如果不将逻辑放入函数中,它将立即被调用,因此您的断言是不正确的。如果以这种方式执行,则将css()
调用的结果分配给mouseenter
处理程序(这是$)
jQuery对象,它也将在不同的范围内执行,因此此
将不是对引发事件的元素的引用,而是持有mouseenter
键的对象,而不是要运行的函数。这正是您需要将逻辑封装在匿名函数中的原因;这样,逻辑可以在需要时执行,而不是立即执行
这两个问题似乎都是由于对匿名函数的使用感到困惑所致。它们可以声明为变量,并在需要时调用之前作为变量传递,例如:
var foo=function(){
log('hello');
}
函数dosomethingafter3秒(操作){
设置超时(操作,3000);
}
3秒后的剂量(foo)代码>Rory非常感谢。您已经为我指明了回调函数的正确路径。非常感谢你的解释。没问题,很乐意帮忙。