JQuery(四)

事件处理

1bind(type,[data],fn) 为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数。type (String)事件类型,data (Object)(可选) 作为event.data属性值传递给事件对象的额外数据对象,fn ( Function)绑定到每个匹配元素的事件上面的处理函数

示例1当每个段落被点击的时候,弹出其文本。

$("p").bind("click", function(){
alert( $(this).text() );
});

示例2在事件处理之前传递一些附加的数据。

function handler(event) {
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)

2one(type,[data],fn) 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。type (String)事件类型,data (Object) (可选) 作为event.data属性值传递给事件对象的额外数据对象,fn (Function)绑定到每个匹配元素的事件上面的处理函数

示例:当所有段落被第一次点击的时候,显示所有其文本。

$("p").one("click", function(){
alert( $(this).text() );
});

3trigger(type,[data]) 在每一个匹配的元素上触发某类事件。type (String) 要触发的事件类型,data (Array)(可选)传递给事件处理函数的附加参数

示例1提交第一个表单,但不用submit()

$("form:first").trigger("submit")

示例2给一个事件传递参数

$("p").click( function (event, a, b) {
//
一个普通的点击事件时,abundefined类型
//
如果用下面的语句触发,那么a指向"foo",b指向"bar"
} ).trigger("click", ["foo", "bar"]);

示例3下面的代码可以显示一个"Hello World"

$("p").bind("myEvent", function (event, message1, message2) {
alert(message1 + ' ' + message2);
});
$("p").trigger("myEvent", ["Hello","World!"]);

4triggerHandler(type,[data]) 这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作. type (String)要触发的事件类型,data (Array) (可选)传递给事件处理函数的附加参数

示例:如果你对一个focus事件执行了 .triggerHandler() ,浏览器默认动作将不会被触发,只会触发你绑定的动作。

Html代码:

<button id="old">.trigger("focus")</button>
<button id="new">.triggerHandler("focus")</button><br/><br/>
<input type="text" value="To Be Focused"/>

$("#old").click(function(){
$("input").trigger("focus");
});
$("#new").click(function(){
$("input").triggerHandler("focus");
});
$("input").focus(function(){ $("<span>Focused!</span>").appendTo("body").fadeOut(1000); });

5unbind([type],[data]) bind()的反向操作,从每一个匹配的元素中删除绑定的事件。如果没有参数,则删除所有绑定的事件。type (String) (可选) 事件类型,data (Function)(可选) 要从每个匹配元素的事件中反绑定的事件处理函数

示例1:把所有段落的所有事件取消绑定

$("p").unbind()

示例2将段落的click事件取消绑定

$("p").unbind( "click" )

示例3删除特定函数的绑定,将函数作为第二个参数传入

var foo = function () {
//
处理某个事件的代码
};

$("p").bind("click", foo); // ...
当点击段落的时候会触发 foo

$("p").unbind("click", foo); // ...
再也不会被触发 foo

操作案例:

<script type="text/javascript">

$(function(){

// 1.绑定事件 01 bind(Type,[data],fn(){});

$("p").bind("click",function(){

$(this).css("background-color","pink");

});

/*绑定事件

2. 02 带参数的绑定方法 :参数名aa(一般习惯通用foo作为参数名),参数值bar,实际参数str 获取传递的参数:实际参数.data.参数名*/

$("p").bind("click",{aa:"bar"},function(str){

alert(str.data.aa);

})

/* 3.传递多个参数 trigger(Type,[data]):在每一个匹配的元素上触发某类事件 $("p").bind("click",function(event,str1,str2){}).trigger("click",[参数值])与直接传参不调用trigger的不同在于 调用trigger()方法不用触发事件直接执行,而按上述两种方法直接传递参数需要加载页面后再点击才执行此操作 */

$("p").bind("click",function(event,str1,str2){

alert("str1="+str1+"str2="+str2);

}).trigger("click",["aa","bb"]);

// 3. 实现隔行变色

$("tr:even").addClass("even");//为指定元素添加class属性

$("tr:odd").addClass("odd");

// 4.实现隔行变色

$("tr:even").addClass("even");//为指定元素添加class属性

$("tr:odd").addClass("odd");

//实现鼠标移动的特效

$("tr").hover(function(){

clr=$(this).css("background-color");

$(this).css("background-color","red");

},function(){

$(this).css("background-color",clr);

});

/** 5. 每次点击后依次调用函数 */

$("p").toggle(function(){

$(this).css("background-color","pink");

},function(){

$(this).css("background-color","green");

},function(){

$(this).css("background-color","blue");

});

});

</script>

部分Html代码:

<style type="text/css">

.even {

background-color: fuchsia;

}

.odd {

background-color: navy;

}

</style>

<body>

<div>

<div>

<h1>事件处理</h1>

</div>

<div>

<p>事件处理函数</p>

</div>

<table border="1px" cellpadding="0" cellspacing="0">

<thead>

<tr id="thed">

<th>序号</th>

<th>名称</th>

<th>邮箱</th>

</tr>

</thead>

<tbody id="tbdy">

<tr class="rdc">

<td>1001</td>

<td>redarmy_chen</td>

<td>redarmy_chen@qq.com</td>

</tr>

<tr>

<td>1002</td>

<td>l_j</td>

<td>redarmy_chen@qq.com</td>

</tr>

</tbody>

</table>

</div>

</body>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值