jquery 事件处理

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> jquery events </TITLE>
<script src="jquery-1.3.2.js" type="text/javascript"></script>
<script language="javascript" >

function one(){
alert("one");
}
function two(){
alert("two");
}
window.onload=one;
//依次给onload赋值时,后面的会覆盖前面的,只能保存对一个函数的引用
window.onload=two;
//最终绑定一个匿名函数,调用两个函数
window.onload=function(){
alert("js");
one();
two();
}
//$(document).ready(function(){}),$().ready(function(){}),$(function(){})等价
//该方法内注册的函数,事件,只要dom加载完毕就可以操作,执行要早于window.onload
//多次调用该方法注册事件会在原来的基础上追加
$(document).ready(function(){
alert("jquery");
one();
two();
})
$(function(){
alert("three");
})
$().ready(function(){
alert("four");
})


/*
bind("",function(){})
参数1是需要绑定的事件,可以是js中已经存在的事件(onclick,onmouseover,change,blur...)
bind中作为参数时没有前面的on("onclick"-->"click"),也可以是
自定义事件,用trigger方法调用;

参数2是处理函数

*/
$(function(){
$("#bt1").bind("click",function(){
alert("正在计算");
}).bind("click",function(){//bind可以多次调用
var tm = new Date().toString();
$(this).next("span").html(tm).show();
}).bind("focus click",function(){
alert("focus or click");
})
})
//为元素绑定事件也可以这样简写
$(function(){
$("#bt2").click(function(){
alert("hello");
})
})
//hover(f1,f2)两个函数参数,当光标移动到元素上时,触发第一个函数,
//当光标移出这个元素时,会触发第二个函数
$(function(){
$("#bt3").hover(function(){
$(this).next("span").html("in");
},function(){
$(this).next("span").html("leave");
})
})
//toggle(f1,f2,f3...),当点击绑定该事件的元素时,会循环重复调用传递的函数参数,
//如果调用到最后一个,下次点击又会从第一个开始
$().ready(function(){
$("#bt4").toggle(
function(){alert("1")},
function(){alert("2")},
function(){alert("3")}
)
})

$(document).ready(function(){
$("#bt5").toggle(function(){
$(this).next("span").hide();
},function(){
$(this).next("span").show();
})
})

</script>
</HEAD>

<BODY>
<hr/>
<button id="bt1">现在的时间?</button><span style="display:none"></span><br/>
<button id="bt2">click</button><br/>
<button id="bt3">test hover()</button><span></span><br/>
<button id="bt4">test toggle() 1</button><br/>
<button id="bt5">test toggle() 2</button><span>hello</span>
<hr/>
<div id="d1" style="background-color:red;width:100px;height:50px">
<span id="s1" style="background-color:green;width:60px;height:30px">hello</span>
</div>
<hr/>
<button id="bt6">点击看我有几个click函数</button><br/>
<button id="bt7">移除一个click事件</button>
<button id="bt8">移除所有click事件</button>
<button id="bt9">移除所有事件</button>
<hr/>
<div style="background-color:red;width:400px;height:50px">
<span>hello</span>
</div>
<button>触发div的自定义事件</button>
</BODY>
<script language="javascript">
/*
分别为选择的div和span注册click事件,上面可知该span是该div的child,
如果点击该span也相当与点击了该div,所以两个的click函数都会触发,如果当点击span时只想
触发span的click函数,可以在其注册函数传递event参数,用event.stopPropagation()来停止事件冒泡,相当于return false;

注册函数传递的event参数包含了一些事件信息
event.type() 事件类型
event.target() 触发事件的元素
event.pageX(),event.pageY() 光标相对于页面的x和y坐标
event.which() 鼠标单机事件中获取鼠标的左、中、右键//对应值分别是1、2、3
event.preventDefault() 阻止事件的默认行为,如submit
event.stopPropagation() 阻止事件冒泡

*/
$("div#d1").click(function(){alert("div click")});

$("span#s1").click(function(event){
alert("span click");
event.stopPropagation();//return false也可以
});

//为id是bt6的button注册事件
$("#bt6").bind("click",myFunc1=function(){
alert("click func1");
}).bind("click",myFunc2 = function(){
alert("click func2")
}).bind("click",myFunc3=function(){
alert("click func3");
}).bind("mouseover",function(){
$(this).css("backgroundColor","green");
}).bind("mouseout",function(){
$(this).css("backgroundColor","");
})
/*
unbind()函数,用来移除注册事件
(1) 没有参数,则删除所有绑定事件
(2)如果提供事件类型作为参数,只删除该类型的绑定事件
(3)在(2)的基础上,传递绑定的处理函数作为第二个参数,
则只有这个特定的事件处理函数会被删除
*/
//点击id为bt7的button移除bt6的第一个click函数
$("#bt7").bind("click",function(){
$("#bt6").unbind("click",myFunc1);
})
//bt8用来移除bt6所有的click函数
$("#bt8").bind("click",function(){
$("#bt6").unbind("click");
})
//bt9用来移除bt6所有的注册事件
$("#bt9").bind("click",function(){
$("#bt6").unbind();
})


/*
对于只需要触发一次的事件可以用one()方法处理,
用法类似bind()方法
*/

//模拟操作,触发事件 trigger();可以是js事件也可以是自定义事件

//选取body下的最后一个button和div元素
var $lsBt = $("body > button:last");
var $lsDv = $("body > div:last");
//为最后一个div绑定一个自定义事件hello
$lsDv.bind("hello",function(){
$(this).append("<span>自定义绑定事件hello被调用<span>")
})
//当点击最后一个button,触发div的hello事件
$lsBt.click(function(){
$lsDv.trigger("hello");
})

</script>
</HTML>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值