.triggerHandler()

.triggerHandler( eventType [, extraParameters ] )返回类型:Object

描述:执行所有针对某个事件附加到某个元素上的处理函数。

.triggerHandler( eventType )执行了年有的用jQuery针对事件类型绑定的处理函数。它依然会执行在元素上能找到的称为on{eventType}()的任何方法。此方法的行为类似于.trigger(),但是有以下例外:

  • .triggerHandler( "event" )方法在触发它的元素上不会调用.event()。这意味着表单上的.triggerHandler( "submit" )不会调用.submit()
  • .trigger()将在由jQuery对象匹配的所有元素上操作,与此同时,.triggerHandler只影响第一个匹配元素。
  • 利用.triggerHandler()触发的事件不会沿着DOM层次向上冒泡;如果不是直接在目标元素上处理它们,它们什么也不会做。
  • .triggerHandler()不是返回jQuery对象(以允许前缀),而是返回它导致执行的最后一个处理函数返回的值。如果没有触发处理函数,它返回undefined

欲进一步了解此方法,请参阅针对.trigger()的讨论。

示例:

如果你在focus事件上调用.triggerHandler()——浏览器的默认focus动作不会被触发,只有绑定到focus事件上的事件处理函数会被触发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>triggerHandler demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<button id="old">.trigger( "focus" )</button>
<button id="new">.triggerHandler( "focus" )</button><br><br>
<input type="text" value="To Be Focused">
<script>
$( "#old" ).click(function() {
$( "input" ).trigger( "focus" );
});
$( "#new" ).click(function() {
$( "input" ).triggerHandler( "focus" );
});
$( "input" ).focus(function() {
$( "<span>Focused!</span>" ).appendTo( "body" ).fadeOut( 1000 );
});
</script>
</body>
</html>

演示: