第一百三十六章 事件浅述

前面我们为了让一些事情得到触发,所以讲了一个事件——click。但当时只是为了满足需求,所以讲的十分简略。今天我们就来把这件事情展开说一说。

其实到现在,我们已经学习的,或者说已经在应用的事件有两个。ready 和 click。回头看它们的语法,十分的相似,表达的意思也都是当某一件事情发生之后,去执行后面函数中的操作。

这也是我们对事件的一个初步认识,我们可以将一些操作绑定在这个事件上,然后当这个事件发生了这些操作也就会被执行。或者说,在这里事件表达的就是一个执行的时机。

这里需要注意的一个点,我们给出的那个函数,其实是一个函数的定义,而不是函数的调用。所以这里需要的参数,是一个函数对象。如果你给出一个函数的调用,事实上给的是这个函数的返回值,那么这个参数的数据类型就不对了。

说的又抽象了,就是我们按照前面的格式去写,或者,我们把要进行的操作定义成一个函数,在和事件绑定的时候只使用这个函数的函数名,后面不要加小括号。如果需要向函数传入参数,我们需要采取另外的办法。

像这样细节的地方还挺多,所以大家在使用各种方法的时候要注意它们所需要的参数的类型

我们要注意这个事件,当然方法或者属性也是一样的,它是属于哪个对象的。我们有几个特殊的对象,window 注意不加 s,这是窗口对象,就是我们浏览器的窗口,或者说就是浏览器对象。这是一个非常基础的对象,因为我们的程序就是运行在它之中,可以认为它是基石,剩下的一切都在它之上建立。

文档对象,document,说的是我们当前这个网页。而我们经常用的,是各种网页元素。我们首先要确认的就是事件发生在上面,这很重要。

然后是事件的冒泡,就是当子元素发生某个事件的时候,它的父元素会不会同时发生这个事件。一个人中了大奖,觉得很开心。因为他中了大奖,他的父亲跟着也很开心;他的爷爷,太爷爷,所有祖先,也跟着很开心……虽然中奖的人只有一个,但是他和他的祖先们都很开心。这差不多就是事件的冒泡。

有很多事件会产生冒泡的行为,但也有一些事件不会。这很重要,因为这确定了一个事件的影响范围;这也不太重要,我们只监听我们所关注的那个元素就可以了,其他的元素是否发生事件,我们可以不关心(但是会不会因此产生其他影响,我们还是要考虑)。

最后,有些事情是不受我们控制的,说准确一些是不受我们程序控制的,我们只能被动的等待它们的发生。比如文档加载完成,它究竟何时完成,这会受到很多因素的影响,我们只能在它开始加载之后默默的等待,而不能在某一刻强行说这个文档加载完成了。就算我们非这么说,在效果上它依旧是没有完成。就好像,我可以说等我有了钱就如何如何,但我只能等待这个事件的发生,我不能现在立刻说:我有钱了。就算强行这么说,我的钱包并不会因此鼓起来,所以并没有改变事实。

不过有些事情并没有那么客观,而是我们可以主观控制。一个按钮,它的作用就是被点击之后触发相关的事件。我们等待用户手动点击,和我们强行让它以为自己被点击了,产生的效果都是给程序一个信号去执行相关的事件。这问题就不太大。

所以我在说什么呢?有一些事件,我们只能在它发生的时候去执行些什么;而有一些事件,我们不光可以等待它的发生,还可以用程序去控制它的发生。

这是很理论性的一章,其实讲的非常肤浅啦。大家读读就好,后面用起来自然就开始理解了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容