事件綁定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");