trigger:在每一个匹配的元素上触发某类事件。
如 $("form:first").trigger("submit"),触发第一个表单的提交事件。
"在实际应用中我们该如何让它在触发事件时同时处理事件",我不知道兄台是如何理解 "触发了事件" 这几个字的, 触发了事件,等同于程序即将执行这个事件,事情是一个方法体. 。
下面是data传参的一个例子,摘抄的。
$("p").click( function (event, a, b) {。
// 一个普通的点击事件时,a和b是undefined类型。
// 如果用下面的语句触发,那么a指向"foo",而b指向"bar"。
} );
$("p").trigger("click", ["foo", "bar"]);。
其实我们还可以给元素自定义事件,以下同样摘抄的。
$("p").bind("myEvent", function (event, message1, message2) {。
alert(message1 + ' ' + message2);。
});
$("p").trigger("myEvent", ["Hello","World!"]);。
myEvent并不是 WEB标准中预定义的行为(如onclick, onmouseover等等才是)。
但在些例中自定义了 myEvent 行为 ,并且通过 trigger 手动触发了绑定在该行为上的事件.。
感觉说得乱七八糟, 自己也给转糊涂了。
可以使用jQuery的trigger() 方法来响应事件。
定义和用法
trigger() 方法触发被选元素的指定事件类型。
语法
$(selector).trigger(event,[param1,param2,...])。
参数描述
event 必需。规定指定元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。
[param1,param2,...] 可选。传递到事件处理程序的额外参数。额外的参数对自定义事件特别有用。
实例:
触发 select元素的change事件:
$("button").click(function(){。
$("select").trigger("change");。
});
常用模拟
有时候,需要通过模拟用户操作,来达到单击的效果。例如在用户进入页面后,就触发click事件,而不需要用户去主动单击。
在JQuery中,可以使用trigger()方法完成模拟操作。例如可以使用下面的代码来触发id为btn的按钮的click事件。
1 $('#btn').trigger("click"); 。
这样,当页面加载完毕后,就会立刻输出想要的效果。也可以直接简写click(),来达到同样的效果:
1 $('#btn').click(); 。
触发自定义事件
trigger()方法不仅能触发浏览器支持的具有相同名称的事件,也可以触发自定义名称的事件。例如为元素绑定一个“myClick”的事件,JQuery代码如下:
1 $('#btn').bind("myClick", function(){ 。
2 $('#test').append("<p>我的自定义事件.</p>"); 。
3 });
// 原生的js触发click事件。
elem.click();
// Jquery也用相同的方式。
// Jquery trigger的代码片段。
trigger: function (event, data, elem, onlyHandlers) {。
// ...
// ...
try {
// 这里是触发事件的代码。
elem[type]();。
} catch (e) {。
// IE<9 dies on focus/blur to hidden element (#1486,#12518)。
// only reproducible on winXP IE8 native, not IE9 in IE8 mode。
}
// ...
// ...
}
return event.result;。
jQuerytriggerHandler(type, [data])。
概述
这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作,也不会产生事件冒泡。
这个方法的行为表现与trigger类似,但有以下三个主要区别:
* 第一,他不会触发浏览器默认事件。
* 第二,只触发jQuery对象集合中第一个元素的事件处理函数。
* 第三,这个方法的返回的是事件处理函数的返回值,而不是据有可链性的jQuery对象。此外,如果最开始的jQuery对象集合为空,则这个方法返回 。
undefined 。
示例:123<button id="old">.trigger("focus")</button><button id="new">.triggerHandler("focus")</button><input type="text" value="To Be Focused"/>123456789$("#old").click(function(){ $("input").trigger("focus");});$("#new").click(function(){ $("input").triggerHandler("focus");});$("input").focus(function(){ $("<span>Focused!</span>").appendTo("body").fadeOut(1000);});。
原文地址:http://www.qianchusai.com/jquery%E7%9A%84trigger%E6%96%B9%E6%B3%95.html