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等其他瀏覽器 都是阻止冒泡












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