事件机制:
事件中的冒泡现象:
严格地说,事件在触发后分为两个阶段,一个是捕获(Capture),另一个则是冒泡(Bubbling)。大多数浏览器并不是都支持捕获阶段,JQuery也不支持。因此事件在触发后往往执行冒泡过程。所谓的冒泡其实质就是事件执行中的顺序。
例:
<body>
<div>
<button></button>
</div>
</body>都具有点击事件,在点击Button的时候会依次响应button、li、div的点击事件。
var count = 0; // 记录点击次数
$("body, div, button").click(function(event){
....
count++;
});
点击一次按钮,count的值会增加至3.
阻止冒泡事件:
var count = 0; // 记录点击次数
$("body, div, button").click(function(event){
....
count++;
event.stopPropagation(); // 阻止冒泡过程
});
页面载入事件:
ready();
以下写法等同:
$(document).ready(function(){...});
$(function(){....});
jQuery(document).ready(function(){...});
jQuery(function(){...});
绑定事件:
一般情况下我们使用的是如下方法绑定点击事件:
$(function(){
$("#myButton").click(function(){
...
});
});
使用bind()方法绑定事件:
bind()是为每个选择元素的时间绑定处理函数:
bind(type, [data], function);
其中type为事件类型,如"click"、"change",此外还有:
blur、focus、load、resize、scroll、unload、click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup、error。
type可以有多个,例:$("myButton").bind("click mouseout", function(){...});
参数data是作为event.data属性传递给事件对象的额外数据对象。
例:$("#myButton").bind("click", {name: '小王'}, function(event){...} );
参数function是绑定到每个选择元素的事件中处理函数。
通过映射方式绑定不同的事件。
例:
$(function(){
$("#myText").bind({
focus:function(){...}, // 当输入域得到焦点的时候响应
change:function(){...} // 当输入域内容发生改变的时候响应
});
});
切换事件:
hover()方法,该方法是使元素在鼠标悬停和移出的事件中进行切换,等价于$("#myDiv").mouseenter(function);和$("#myDiv").mouseleave(function);两个事件。
toggle()方法,该方法的功能是每次点击后
依次
调用函数。例:$("#myButton").toggle(function1, function2, [function3 , ...]);
移除事件:
unbind()方法移除元素绑定的事件,例:$("#myButton").unbind([type], [function]);
其他事件:
one()方法,使用one()方法绑定触发一次的事件。例:$("#myButton").one("click", function(){...});
trigger()方法,该方法是在所选择的元素上
触发
指定类型的事件,比如用在当DOM元素加载完成后触发某些特定的事件
用法:$("#myButton").trigger([type], [data]);
例:$("#myInput").trigger("select"); // 自动选中文本框