我是 JavaScript和JQuery的新手,需要帮助才能看到这个例子中的逻辑: 如果我想在click事件上隐藏div,正确的解决方案如下所示: $(document).ready(function() { $('div').click(function() { $('div').hide();
如果我想在click事件上隐藏div,正确的解决方案如下所示:
$(document).ready(function() { $('div').click(function() { $('div').hide(); }); });
但对我来说,如果它看起来像这样会更有意义:
$(document).ready() { $('div').click() { $('div').hide(); }; };
希望有人理解为什么我发现这令人困惑,并能解释我明显错过的东西.
UI编程本质上是 Event driven.在此范例中,无论您使用何种语言,都必须定义将在事件发生时运行的事件处理程序.
在您的示例中,如果您使用不太紧凑的语法,则更具表现力:
$('div').on('click', reaction);
在纯OOP(例如java)中,反应将是实现特定接口的对象:
import java.util.Observer; public class ResponseHandler implements Observer { ... } ResponseHandler reaction = new ResponseHandler();
现在,欢迎使用Javascript!
由于Javascript函数是Higher-order,将函数作为参数传递是一种常见的做法,它们被命名为callbacks.而且,当定义此回调函数时,javascript也非常冗长.
必须使用完整函数表达式来定义回调(命名或匿名).或者你可以转移到Coffescript化妆品来浏览这些函数定义(但它们只是语法糖,因为无论如何都存在函数定义).
您发明的{}语法或coffescript箭头语法实际上隐藏了实际的反应.
$('div').on('click', reaction);
javascript中的反应只是一个函数,一个回调函数.
现在,jQuery事件是reactor engine的一个实现,允许您的应用程序代码与实际引擎完全分离.这意味着jQuery应用程序是一组对事件的反应定义:
>只要文档准备就绪,请执行此操作.>每当用户点击div时,就这样做.>每当鼠标进入跨度,做任何事情.