事件

事件綁定html

咱們通常使用的是bind()方法瀏覽器

bind()方法有3個參數:ide

第一個參數是事件類型,包括 blur、focus、load、resize、scroll、unload、click、dblick、函數

mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、this

select、submit、keydown、keypress、keyup、和error等,固然也能夠是自定義名稱。spa

第二個參數爲可選參數,做爲event.data屬性值傳遞給事件對象的額外數據對象。htm

第三個參數則是用來綁定的函數處理。對象

合成事件seo

jQuery有兩個合成事件——hover()方法,相似前面講過的ready()方法,hover()方法和toggle()方法都屬於jQuery自定義的方法。事件

hover()方法

hover()方法的語法結構爲: hover(enter,leave);

hover()方法用於模擬光標懸停事件。當光標移動到元素上時,會觸發指定的第1個函數(enter);

當光標移出這個元素時,會觸發指定的第2個函數(leave)。

示例:

$(function () {
            $("#pane1 h5.head").hover(function () {
                $(this).next().show();
            }.function(){
                $(this).next().hide();
            });
});

toggle()方法

toggle()方法的語法結構爲: toggle(fn1,fn2,…fnN);

toggle()方法用於模擬鼠標連續單擊事件。第1次單擊元素,觸發指定的第1個函數(fn1);當再次單擊同一元素時,則觸發指定的第2個函數(fn2);若是有更多函數,則依次觸發,直到最後一個。隨後的每次單擊都重複對這幾個函數的輪番調用。

事件冒泡

什麼是事件冒泡呢?

在頁面上能夠有多個事件,也能夠多個元素響應同一個事件。假設網頁上有兩個元素,其中一個元素嵌套在另外一個元素裏,而且都被綁定了click事件,同時<body>元素上也綁定了click事件。

例如:

$(function () {
            //爲span元素綁定click事件
            $('span').bind("click".function(){
                var txt = $('#msg').html(txt);
            });
            //爲div元素綁定click事件
        $('#content').bind("click".function(){
            var txt = $('#msg').html()+"<p>外層div元素被單擊<p/>";
            $('#msg').html(txt);
        });
        //爲body元素綁定click事件
            $("body").bind("click".function(){
                var txt = $('#msg').html()+"<p>body元素被單擊.<p/>";
            $('#msg').html(txt);
            });
        })
    </script>
</head>
<body>
    <div id="countent">
        外層div元素
        <span>內層span元素</span>
        外層div元素
    </div>
    <div id="msg"></div>

事件冒泡引起的問題

事件冒泡可能會引發預料以外的效果。上例中,原本只想觸發<span>元素的click事件,然而<div>元素和<body>元素的click事件也同時被觸發了。所以,有必要對事件的做用範圍進行限制。

移除事件

在綁定事件的過程當中,不只能夠爲同一個元素綁定多個事件,也能夠爲多個元素綁定同一個事件。

unbind(type [,data])     //data是要移除的函數

    $('#btn').unbind("click"); //移除click

    $('#btn').unbind(); //移除全部
    對於只須要觸發一次的,隨後就要當即解除綁定的狀況,用one()

    $('#btn').one("click",function(){.......});
    模擬操做

    能夠用trigger()方法完成模擬操做。

    $('#btn').trigger("click");
    $('#btn').click();

    觸發自定義事件

    $('#btn').bind("myclick",function(){....});

    $('#btn').trigger("myclick");
    傳遞數據

    trigger(type [,data])

    $('#btn').bind("myclick",function(event,message1,message2){...........});

    $('#btn').trigger("myclick",["傳給message1","傳給message2"]);

    執行默認操做
    $("input").trigger("focus");

        //不只會觸發input元素綁定的focus事件,還會觸發默認操做——獲得焦點。

    $("input").triggerHandler("focus");

        //只觸發綁定事件,不執行瀏覽器默認操做

    其餘用法

    綁定多個事件類型

    $("div").bind("mouseover mouseout",function(){.....});

    添加事件命名空間

    $("div").bind("click.plugin",function(){......});

    在所綁定的世界類型後面添加命名空間,這樣在刪除事件時只須要指定命名空間便可。

        $("div").unbind(".plugin");   //刪除空間內的事件

    $("div").trigger("click!"); //觸發因此不包含在命名空間中的click方法

    若是包含在命名空間的也要觸發:

        $("div").trigger("click");

相關文章
相關標籤/搜索