利用JQuery怎么实现一个绑定事件

介绍

利用JQuery怎么实现一个绑定事件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

JQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码。下面我们来看下JQuery中绑定事件的方式都有哪些。

JQuery中提供了四种事件监听方式,分别是绑定,生活,代表,对应的解除监听的函数分别是解开,死,undelegate,。在开始看他们之前

一:绑定(类型、(数据)、函数(eventObject))

绑定是使用频率较高的一种,作用就是在选择到的元素上绑定特定事件类型的监听函数,参数的含义如下:

类型:事件类型,如点击,改变,鼠标悬停等;

数据:传入监听函数的参数,通过event.data取到。可选;

功能:监听函数,可传入事件对象,这里的事件是JQuery封装的事件对象,与原生的事件对象有区别,使用时需要注意

绑定的源码:

绑定:函数(类型、数据、fn) {
返回。(类型、空数据,fn);
}
美元(& # 39;# myol李# 39;).bind(& # 39;点击# 39;,getHtml);

绑定的特点就是会把监听器绑定到目标元素上,有一个绑一个,在页面上的元素不会动态添加的时候使用它没什么问题。但如果列表中动态增加一个“列表元素5”,点击它是没有反应的,必须再绑定一次才行。要想不这么麻烦,我们可以使用生活。

jQuery还有一种事件绑定的简写方式如a.click(函数(){});,为了论资排辈(函数(){});等,它们的作用与绑定一样,仅仅是简写而已。

二:活(类型、(数据)、fn)

生活的参数和绑定一样,它又有什么蹊跷呢,我们还是先瞄一眼源码:

生活:函数(类型、数据、fn) {
jQuery(这。上下文)。(类型,这。选择器、数据、fn);
返回;
}

可以看到生活方法并没有将监听器绑定到自己身(这)上,而是绑定到了this.context上了。这个上下文是什么东西呢,# 63;其实就是元素的限定范围,看了下面的代码就清楚了:

美元(& # 39;# myol李# 39;).context;//文档
$ (& # 39; # myol李# 39;,& # 39;# myol& # 39;) .context;//文档
$ (& # 39; # myol李# 39;,美元(& # 39;# myol& # 39;) [0]);//ol

通常情况下,我们都不会像第三种方式那样使用选择器,所以也就认为这个上下文通常就是文档了,即生活方法把监听器绑定到了文档上了。不把监听器直接绑定在元素上,你是不是想起事件委托机制来了呢,# 63;若没有,可以点击这里回忆一下.live正是利用了事件委托机制来完成事件的监听处理,把节点的处理委托给了文档。在监听函数中,我们可以用事件。currentTarget来获取到当前捕捉到事件的节点。下面的例子来揭晓:

美元(& # 39;# myol李# 39;).live(& # 39;点击# 39;,getHtml);

三:活存在那样的缺点,所以我们就思考,既然老爷子负担那么重,可不可以别把监听器绑定在文档上呢,绑定在就近的父级元素上不就好了。顺应正常逻辑,委托诞生了。

参数多了一个选择器,用来指定触发事件的目标元素,监听器将被绑定在调用此方法的元素上。看看源码:

委托:函数(选择器、类型、数据、fn) {
返回。(类型、选择器、数据、fn);
}

又是调用了,并且把选择器传给了。看来这上个真的是举足轻重的东西。照样先不管它。看看示例先:

美元(& # 39;# myol& # 39;) .delegate(& # 39;李# 39;& # 39;点击# 39;,getHtml);

看了这么多,你是不是迫不及待想看看这上个的真实面目了呢,这就来:

(类型、(选择)、(数据),fn)

参数与委托差不多但还是有细微的差别,首先类型与选择器换位置了,其次选择器变为了可选项。交换位置的原因不好查证,应该是为了让视觉上更舒服一些吧。

我们先不传选择器来看一个例子:

美元(& # 39;# myol李# 39;)内(& # 39;点击# 39;,getHtml);

可以看到event.currentTarget是李自己,与绑定的效果一样。至于传器进去,就是跟委托一样的意义了,除了参数顺序不同,其他完全一样。

终于看到上的真实作用了,那么,这么多的事件绑定方式,我们该如何进行选择呢,# 63;

其实这个问题是完全不必纠结的,因为你已经知道他们之间的区别了不是么,# 63;根据实际情况斟酌使用就行,不过官方有一个推荐就是尽量使用,因为其他方法都是内部调用在来完成的,直接使用在可以提高效率,而且你完全可以用在来代替其他三种写法。至于如何代替我想就不必这么直白的写出来了,真正理解它们的区别之后自然而然也就不是难事了。

利用JQuery怎么实现一个绑定事件