jQuery.bind()事件

jQuery.bind():绑定事件
参数: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。

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

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

案例1:一个简单的bind()事件
$("#id").bind("click",function(){
    alert("hello!");
});

案例2:绑定多个事件
$("#id").bind("click",function(){
    alert("hello!");
}).bind("mouseout",function(){
    $("#id").show();
});

案例3:事件对象
$("#id").bind("dblclick",function(){
    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");
});


------------------------------------------------------------------
jQuery.unbind():
参数:unbind([type],[data],Handler) 

unbind()事件是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件。如果没有参数,则删除所有绑定的事件。

案例1:
$(function () {
    $("#LooseFocus").unbind("click", foo);
})


jQuery.one():

其实one和bind是一样,都是为了绑定事件而产生的。One与bind基本上差不多,不同的在调用 jQuery.event.add时,把注册的事件处理的函数做了一个小小的调整。One调用了jQuery.event.proxy进行了代理传入的事 件处理函数。在事件触发调用这个代理的函数时,先把事件从cache中删除,再执行注册的事件函数。这里就是闭包的应用,通过闭包得到fn注册的事件函数 的引用。

one(type,[data],fn)

bind & one

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);
});


javaScript 冒泡事件:
冒泡实例代码:
<body onclick="MyBodyClick()">
    <div onclick="MyClickOut()">
        <div onclick="MyClickInner()">
            <span id="MySpan">I love JQuery!!</span>
        </div>
    </div>
</dody>

<script type="text/javascropt">
    function MyClickOut() {
        alert("outer Div");
    }
    
    function MyClickInner() {
        alert("Inner Div");
    }

    function MyBodyClick() {
        alert("Body Click");
    }

    $(function () {
        $("#MySpan").bind("click", function (event) {
            alert("I'm span");
            event.stopPropagation();
      });

</script>

cancelBubble() IE 的阻止冒泡事件、stopPropagation()Firefox和Chrome等其他浏览器 都是阻止冒泡












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章