来源:自学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