jquery bind

1.bind( eventType [, eventData], handler(eventObject))

 eventType是一个字符串类型的事件类型,就是你所需要绑定的事件。这类类型可以包括如下:blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error 。这里需要注意的是,这里用的都是javascript里面的事件方法,而不是JQuery里面的,JQuery里面的事件方法均在JavaScript 前面多了一个“on”,比如onclick,onblur 等等。

eventData参数是一个可选参数,不过它在平时用的比较少。如果提供了这个参数,那么我们就能把一些附加信息传递给事件处理函数了。这个参数有个很好的用处,就是处理闭包带来的问题。

Handler是用来绑定的处理函数,就是回调函数,处理完数据之后相应的方法。

2.绑定多个事件

我们可以通过bind()来绑定多个事件--链式编程

show()均可以用“slow”、“fast”和“normal”,当然你还可以设置相关的毫秒数。

3.bind()事件的对象

Handler这个回调函数可以接受一个参数,当这个函数被调用时,一个JavaScript事件对象会作为一个参数传进来。

 $("p").bind("click", function(event){
 var str = "( " + event.pageX + ", " + event.pageY + " )";
 $("span").text("Click happened! " + str);
 });
 $("p").bind("dblclick", function(){
 $("span").text("Double-click happened in " + this.nodeName);
 });
 $("p").bind("mouseenter mouseleave", function(event){
 $(this).toggleClass("over");
 });

4.unbind()事件

unbind([type],[data],Handler) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件。如果没有参数,则删除所有绑定的事件。你可以将你用bind()注册的自定义事件取消绑 定。如果提供了事件类型作为参数,则只删除该类型的绑定事件。如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

5. one(type,[data],fn)

one()事件的使用,了绑定事件,不同的在调用 jQuery.event.add时,把注册的事件处理的函数做了一个小小的调整。One调用了jQuery.event.proxy进行了代理传入的事 件处理函数。在事件触发调用这个代理的函数时,先把事件从cache中删除,再执行注册的事件函数。这里就是闭包的应用,通过闭包得到fn注册的事件函数 的引用。 

为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。 在每个对象上,这个事件处理函数只会被执行一次。这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。

 

//Bind()代码的实现:

 bind : function(type, data, fn) { 
 return type == "unload" ? this.one(type, data, fn) : this 
 .each(function() {//fn || data, fn && data实现了data参数可有可无 
 jQuery.event.add(this, type, fn || data, fn && data); 
 }); }, 

//One()  代码的实现:

 one : function(type, data, fn) { 
 var one = jQuery.event.proxy(fn || data, function(event) { 
 jQuery(this).unbind(event, one); 
 return (fn || data).apply(this, arguments);/this->当前的元素 
 }); 
 return this.each(function() { 
 jQuery.event.add(this, type, one, fn && data); 
 }); 
 }, 

trigger与js提供的click()等一样,是用来触发事件的,但是trigger可以传参数:trigger(type, [data]) 。

触发自定义事件并传参

    $("input").bind("myevent",function(event,msg1,msg2){     
                alert("msg1:"+msg1);     
     })     
    $("input").click(function(){     
                    $("input").trigger("myevent",["avalue","bvalue"])     
     });    
    $("input").bind("myevent",function(event,msg1,msg2){  
       alert("msg1:"+msg1);  
    })  
    $("input").click(function(){  
        $("input").trigger("myevent",["avalue","bvalue"])  
    }); 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。