JQuery

1个成员

jQuery绑定事件之live()、bind()方法介绍

发表于 2016-12-30 3108 次查看
jquery中正为因事件绑定功能现在在html或div上很难看到onclick之类的事件了,而直接使用#id,class名,然后由live()、bind()方法绑定再操作了,下面我来介绍绑定事件之live()、bind()方法用法。

live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。


问题:使用jQuery的live()方法绑定事件,有时会出现重复绑定的情况,如,当点击一个按钮时,此按钮所绑定的事件会并执行n遍。

解决:使用die()方法,在live()方法绑定前,将此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件。


Js代码

 代码如下 复制代码

//先通过die()方法解除,再通过live()绑定  
$("#selectAll").die().live("click",function(){  
        //事件运行代码  
 }); 


使用jquery也有近1年了,今天在看国外大牛代码突然发现一个地方没看明白,代码如下

 代码如下 复制代码

$(window).bind('load.jcarousel', function() { windowLoaded = true; });

也许我对jQuery的了解不多吧,自己也就看过一本jQuery的入门书,然后总是在工作中学习,碰着问题了就总结一点,学习一点...嘿嘿,也许为什么动不动公司招人就是1年以上工作经验什么的,确实实战才是能让人最快速提高的。

找到jQuery API,解释如下:


1.  一次可以绑定多个事件。如:

 代码如下 复制代码

$('#foo').bind({
  click: function() {
    // do something on click
  },
  mouseenter: function() {
    // do something on mouseenter
  }
});  

2.  任何作为type参数的字符串都是合法的;如果一个字符串不是原生的JavaScript事件名,那么这个事件处理函数会绑定到一个自定义事件上。这些自定义事件绝对不会由浏览器触发,但可以通过使用.trigger()或者.triggerHandler()在其他代码中手动触发。


3.  如果type参数的字符串中包含一个点(.)字符,那么这个事件就看做是有命名空间的了。这个点字符就用来分隔事件和他的命名空间。如:

$obj.bind('click.name', handler) 那么字符串中的 click 是事件类型,而字符串 name 就是命名空间。

发表回复
你还没有登录,请先登录注册