jquery增加并扩展了基本的事件处理机制,并且提供了更加优雅的事件处理语法,极大地增强了事件处理能力,让你不必考虑不同浏览器事件的不同实现机制,更好地支持多浏览器。
1、入门:加载DOM
语法 1
$(document).ready(function)
语法 2
$().ready(function)
$(function)
2、jquery事件绑定
$('#foo').bind('click', {msg: 'hello'}, function(event){//函数传递的event对象,再也不要写event = event || window.event了,是不是很爽O(∩_∩)O~
alert(event.data.msg);
});
对一些常见的事件,jquery特别为此提供了一套简写的方法。简写方法和bind方法相类似,实现的效果也一样,只是为了编写方便而已,比如常见的click(fn)、mouseover(fn),mouseout(fn)函数
3、合成事件
hover(enter,leave);//
使用举例如下:
<h3 id='foo'>
把鼠标移到我身上吧!
</h3>
<div class='content'>
我是内容,我是内容 <br />
我是内容,我是内容 <br />
我是内容,我是内容 <br />
我是内容,我是内容 <br />
我是内容,我是内容 <br />
</div>
</BODY>
<script language="javascript">
<!--
$(function(){
$('#foo').hover(
//第一个事件处理函数,显示内容
function(){
$(this).next('div.content').show();
},
//第二个事件处理函数,隐藏内容
function(){
$(this).next('div.content').hide();
});
})
//-->
</script>
toggle方法用于模拟鼠标连续单击事件,第1次单击元素,触发指定的第1个函数fn1,再次点击同一元素,触发第2个函数fn2;若有更多函数,则依次触发,直到最后一个。随后的每次点击都重复对这几个函数的轮番调用。
<h3 id='foo'>
跪求点击!
</h3>
<div class='content'>
我是内容,我是内容 <br />
我是内容,我是内容 <br />
我是内容,我是内容 <br />
我是内容,我是内容 <br />
我是内容,我是内容 <br />
</div>
</BODY>
<script language="javascript">
<!--
$(function(){
$('#foo').toggle(
//第一个事件处理函数,显示内容
function(){
$(this).next('div.content').show();
},
//第二个事件处理函数,隐藏内容
function(){
$(this).next('div.content').hide();
});
})
//-->
</script>
4、事件冒泡
<div id='div1'>
<div id='div2'>
<div id='div3'>
div3
</div>
</div>
</div>
<script language="javascript">
<!--
$(function(){
$('div').click(function(e){alert(this.id)});
});
//-->
</script>
使用jquery阻止冒泡方法:event,stopPropagation();
5、事件对象的常见属性
- type属性,用于获取事件的类型,比如说获取点击事件是click,event.type();
- event.pageX,event.pageY属性
event.pageX/event.pageY相当于ie中的event.x/event.x,firefox中的event.pageX/event.pageY.jquery对event.pageX/event.pageY进行了封装,使其支持多浏览器
- event.target属性,获取触发事件的DOM元素(注意不是jquery元素)
- event.which属性,用于获取在鼠标单击事件中,按下的是哪个键,1 = 鼠标左键, 2 =鼠标中间, 3 = 鼠标右键
- event.originalEvent属性,指向原始的DOM事件对象
- event.preventDefault()方法,阻止默认事件
- event.stopPropagation()方法,阻止冒泡
-
event.relatedTarget属性
在标准的DOM中,mouseover和mouseout所发生的元素可以通过event.target来访问,相关元素是通过event.relatedTarget属性来访问的。event.relatedTarget方法在mouseover中相当于ie浏览器中的event.fromElement()方法,在mouseout中相当于ie浏览器的event.toElement方法,jquery对其进行了封装,使之兼容多种浏览器。
下面是一个例子:
<div id="dv1"> 移动到我身上吧! </div> <div id='dv2'>gweag</div> <script language="javascript"> <!-- $(function(){ $('#dv1').bind('mouseover',function(event){ alert("我是从id为“"+event.relatedTarget.id+"”的元素进入元素的"); //event.preventDefault(); return false; }); }); //--> </script>
6、移除事件
unbind(eventType,[data])//其中第一个参数是事件类型,如常见的'click',data为绑定给事件的事件处理函数名。若一个参数都没有指定,则默认移除所有事件绑定
7、模拟事件
<div id="foo">
I am foo!
</div>
<button onclick="" id='btn'>click me!</button>
<script language="javascript">
<!--
var $foo = $('#foo');
//为foo元素绑定事件
$foo.bind('click',function(){
alert(111);
});
//点击按钮时,使用trigger函数模拟foo的点击操作
$('#btn').click(function(){
$foo.trigger('click');
});