来源:自学PHP网 时间:2014-11-29 13:28 作者: 阅读:次
[导读] 这篇文章主要介绍了jQuery事件用法实例汇总,对事件的绑定及各类事件的用法做了较为详尽的实例分析,有很好的借鉴价值,需要的朋友可以参考下...
本文以实例形式详细汇总了jQuery中事件的用法,对jQuery的学习有很好的参考价值。分享给大家供大家参考之用。具体用法如下: 1.通过方法名给元素绑定事件: $('li').click(function(event){}) 2.通过bind方法给元素绑定事件: $('li') .bind('click',function(event){}) .bind('click',function(event){}) 可见,通过bind,可以给元素绑定多个事件。 3.事件的命名空间 为什么需要事件命名空间? →假设,先给li元素绑定2个click事件。 $('li') .bind('click',function(event){}) .bind('click',function(event){}) →现在我们要把其中一个click事件注销掉,可能这样写: $('li').unbind('click') 但这样,我们li所有的click事件都注销了,这不是我们想要的。使用事件命名空间可解决这一问题,之所以需要事件命名空间,是因为它为我们在注销事件的时候提供了方便。 如何使用事件命名空间? $('li') .bind('click.editMode',function(event){}) .bind('click.displayMode',function(event){}) →在注销事件的时候,可以这样写: $('li').unbind('click.editMode') 4.事件的种类 blur 5.one方法 用于创建一次性事件,一旦这个事件执行了一次后,就会被自动删除。 $("p").one("click",function(){ $(this).animate({fontSize: "+=6px"}); }) 6.删除事件 //先给元素添加事件 $("p").click(function(){ $(this).slideToggle(); }) //再把元素的事件删除 $("button").click(function(){ $("p").unbind(); }) 7.Event属性 实际上,它是jquery的全局属性,jQuery.Event。每当触发事件,Event对象实例就会被传递给Event Handler。 可以通过Event的构造函数来创建事件,并触发事件。 var e = jQueery.Event("click") jQuery("body").trigger(e); 甚至可以通过构造函数,把一个匿名对象放在Event中传递。 var e = jQuery.Event("keydown", {keyCode : 64}); jQuery("body").trigger(e); 使用的时候,通过event.data.KeyCode来获取匿名对象的值。 可以通过jQuery.Event的构造函数把匿名对象放在Event中传递,不仅如此,通过事件也可以传递匿名对象。 $("p").click({param1 : "Hello", param2 : "World"}, someFunction); function someFunction(event){ alert(event.data.param1); alert(event.data.param2); } 可见,通过event.data可以获取匿名对象的键。 通过Event对象实例,还可以拿到其它方面的信息,比如: $("p").click(function(event){ alert(event.target.nodeName); }) 以上,通过event.target.nodeName获取触发事件的元素名称。 jQuery.Event的其它属性包括: altKey 如果alt键按下就为true,在Mac键盘中alt键标记为Option 8.Event方法 event.preventDefault()阻止默认行为 9.live方法和on方法 该方法允许我们为还不存在的元素创建事件。与bind方法不同的是:能为所有匹配的元素绑定事件,设置是那些暂时还不存在、需要动态创建的元素。而且,live方法不一定要放在$(function(){})就绪处理器中。到了 jQuery 1.7以后,就改为on方法了。 $("p").on("click", function(){ alert("hello"); }) 如果想取消注册事件: $("button").click(function(){ $("p").off("click"); }) 10.trigger方法 当我们想手动触发元素绑定的事件时可以使用trigger方法。 $("#foo").on("click",function(){ alert($(this).text()); }) $("#foo").trigger("click"); 还可以在绑定事件的时候出传入形参,在trigger事件的时候传入实参。 $("#foo").on("custom", function(event, param1, param2){ alert(param1 + "\n" + param2) }) $("#foo").trigger("custom",["Custom","Event"]); trigger触发由jQuery.Event创建的实例: var event = jQuery.Event("logged"); event.user = "foo"; event.pass = "bar"; $("body").trigger(event); 甚至可以在trigger触发方法的时候传入匿名对象: $("body").trigger({ type: "logged", user: "foo", pass: "bar" }); 如果想停止触发事件的传播,可通过jQuery.Event实例的stopPropgation()方法,或在任何事件中返回false。 11.triggerHandler方法 triggerHandler方法与trigger方法的不同之处在于:triggerHandler方法不会执行元素的默认事件,也不会"冒泡"。 //给一个元素绑定一个focus事件 $("input").focus(function(){ $("<span>Focused</span>").appendTo("#id").fadeOut(1000); }) //用triggerHandler触发 $("#id").click(function(){ $("input").triggerHandler("focus");//不会触发focus的默认行为,即进入文本框 }) //用trigger触发 $("#id").click(function(){ $("input").trigger("focus");//同时触发foucs的默认行为和绑定行为 }) 12.事件冒泡和事件委托 什么是事件冒泡? 有这么一段代码。 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <div> <p><a href="#foo"><span>I am a Link!</span></a></p> <p><a href="#bar"><b><i>I am another Link!</i></b></a></p> </div> </body> </html> 现在,给该页面所有的元素绑定click事件,包括window和document。 $(function () { $('*').add([document, window]).on('click', function(event) { event.preventDefault(); console.log(this); }); }); 当单击页面任何元素,单击事件会从当前元素开始,向上一级元素传播,直到最顶级元素,这里是window。 如何阻止事件冒泡? 显然,通常只希望在某个特定元素发生特定的事件,不希望事件冒泡的发生。这时候我们可以针对某个特定元素绑定事件。 $(function () { $('a').on('click', function(event) { event.preventDefault(); console.log($(this).attr('href')); }); }); 以上,只为a绑定了click事件,无它。 如何有效利用事件冒泡? 在jquery中,事件委托却很好地利用了事件冒泡。 <html> <body> <div id="container"> <ul id="list"> <li><a href="http://domain1.com">Item #1</a></li> <li><a href="/local/path/1">Item #2</a></li> <li><a href="/local/path/2">Item #3</a></li> <li><a href="http://domain4.com">Item #4</a></li> </ul> </div> </body> </html> 现在,我们想给现有li中的a标签绑定事件,这样写: $( "#list a" ).on( "click", function( event ) { event.preventDefault(); console.log( $( this ).text() ); }); 但是,如果又在现有的ul中添加新的li和a,那情况又如何呢? $( "#list" ).append( "<li><a href='http://newdomain.com'>Item #5</a></li>" ); 结果,点击新添加的li中的a,什么都没有发生。那么,如何为动态添加的元素绑定事件呢? 如果我们能把事件绑定到a的父级元素,那在父级元素内生成的子级动态元素,也会有绑定事件的行为。 $( "#list" ).on( "click", "a", function( event ) { event.preventDefault(); console.log( $( this ).text() ); }); 以上,我们把click事件绑定到a的父级元素id为list的ul上,on方法中的第二个参数,这里是a,是事件真正的执行者。具体过程如下: 事件委托允许我们把事件绑定到父级元素,这相当于给所有的子级元素绑定了事件,不管这个子级元素是静态的、还是动态添加的。 13.toggle方法 允许我们依次执行多个事件,当执行完最后一个事件后,再执行第一个事件。 $('img[src*=small]').toggle({ function(){}, function(){}, function(){} }); 14.mouseenter和mouseleave方法 $(element).mouseenter(function(){}).mouseleave(function(){}) 15.hover方法 $("p").hover(function(){ $("p").css("background-color","yellow"); },function(){ $("p").css("background-color","pink"); }); 相信本文所述对大家的jQuery程序设计有一定的借鉴价值。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com