当前位置:编程学习 > JAVA >>

JQuery快速学三之一(事件)

首先我们来看一看JQuery事件,包括如下几部分:

1.页面载入 ready(fn)

2.事件处理 bind,one,trigger,triggerHandler,unbind

3.事件委派 live,die

4.事件切换 hover,toggle

5.普通事件 click,blur,focus......

页面载入:
ready事件是JQuery的一个标志性事件,ready事件和传统的javascript的load事件有点相像,主要区别是在执行时机方面。我们先来看一个例子吧:

[javascript] 
<script type="text/javascript" src="js/jquery-1.10.1.min.js"></script> 
<script type="text/javascript"> 
    function Test(){ 
        alert("JavaScript"); 
    } 
     
    function Test2(){ 
        alert("JQuery"); 
    } 
     
    $(document).ready(function(){ 
        Test2(); 
    }) 
     
</script> 
</head> 
 
<body onLoad="Test()"> 
 
</body> 

<script type="text/javascript" src="js/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
 function Test(){
  alert("JavaScript");
 }
 
 function Test2(){
  alert("JQuery");
 }
 
 $(document).ready(function(){
  Test2();
 })
 
</script>
</head>

<body onLoad="Test()">

</body>运行这个例子,会发现先弹出"JQuery",然后再弹出"JavaScript",这是他们两者之间的一个明显的区别。

区别:

1.)window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器之后才执行,即JavaScript此时才可以访问网页中的任何元素(图片,div)等等。

而通过JQuery中的$(document).ready()方法注册的事件处理程序,在DOM完全就绪时就可以被调用了,也就是说JQuery的ready方法优于js的onload方法。

2.)JQuery中的$(document).ready()方法可以多次使用,而window.onload只加载一次,需要点技巧才可以多次使用(想知道的话,百度一下哈)。案例:

[javascript]
<script type="text/javascript"> 
    $(function(){ 
        JQTe(); 
    }) 
    $(function(){ 
        JQTe2(); 
    }) 
     
    function JQTe(){ 
        alert("abc1"); 
    } 
     
    function JQTe2(){ 
        alert("abc2"); 
    } 
     
    function Js(){ 
        alert("0"); 
    } 
     
    function Js2(){ 
        alert("1"); 
    } 
     
    window.onload=Js; 
    window.onload=Js2; 
</script> 

<script type="text/javascript">
 $(function(){
  JQTe();
 })
 $(function(){
  JQTe2();
 })
 
 function JQTe(){
  alert("abc1");
 }
 
 function JQTe2(){
  alert("abc2");
 }
 
 function Js(){
  alert("0");
 }
 
 function Js2(){
  alert("1");
 }
 
 window.onload=Js;
 window.onload=Js2;
</script>运行如上的案例:我们会发现通过JQuery中的$(document).ready()方法弹出了两个提示框,而传统的JavaScript只执行了最后一个。

温馨提示:$(document).ready(function(){...Code..})可以简写成:$(function(){..Code..})

事件处理:(bind,one,trigger,triggerHandler,unbind)
bind事件:绑定的元素必定要事先存在,后添加进来的元素无效(例如通过js动态添加新的元素,该元素将不会被bind事件所绑定)。

语法:$(选择器).bind('事件',function(){});

例如:

  html代码:

  <div id="abc">Div内容</div>

  js代码:

$('#abc').bind('click',function(){

  alert('bind事件');

});

 

one事件:为元素绑定一次性事件,该事件只会执行一次。

语法:$('选择器').one('click',function(){})

例如:

html代码:

  <div id="abc">Div内容</div>

  js代码:

$('#abc').one('click',function(){

  alert('只会弹出一次');

});

 

trigger事件:模拟用户触发事件,该事件会引起冒泡(冒泡事件会在稍后提到)

例如:

html代码:

  <div id="abc2">Div2内容<div id="abc">Div内容</div>

js代码:

[javascript] 
$(function(){ 
    $('#abc').click(function(){ 
        alert('test'); 
    }) 
         
    $('#abc2').click(function(){ 
        alert('test2'); 
    }) 
         
    $('#abc').trigger('click'); 
    $('#abc').click(); 
}) 

$(function(){
 $('#abc').click(function(){
  alert('test');
 })
  
 $('#abc2').click(function(){
  alert('test2');
 })
  
 $('#abc').trigger('click');
 $('#abc').click();
})程序运行的时候为id为abc的元素绑定单击事件,并且为id为abc2的元素也绑定单击事件,绑定完成之后使用trigger模拟用户的点击操作,程序弹出alert('test');和alert('test2');

如此可见,该trigger会触发事件冒泡,模拟事件还可以使用如上写到的直接调用事件($('#abc').click()),不为事件指定方法体即可,实现的效果和trigger一致。要阻止事件冒泡可以使用:stopPropagation(),该方法稍后会提到。

 

triggerHandler事件:与trigger事件相似,有如下不同之处:

1)triggerHandler方法并不会触发事件的默认行为。(例如,表单提交)。

2)trigger()会影响所有与 jQuery 对象相匹配的元素,而triggerHandler()仅影响第一个匹配到的元素。

3)使用 triggerHandler()创建的事件,并不会在 DOM 树中向上冒泡。如果事件没有被目标元素直接处理,那么它就不会进行任何处理。

4)  与普通的方法返回 jQuery 对象(这样就能够使用链式用法)相反,triggerHandler()返回最后一个处理的事件的返回值。如果没有触发任何事件,会返回 undefined。

 

unbind事件:移除bind方法绑定的事件。

1)当直接使用unbind方法的时候,将去除对应元素上所有的bind方法绑定的事件,例如:$('#abc').unbind();

2)当然unbind方法也可以指定移除具体的事件,

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,