现在的位置: 网页制作教程网站制作教程 >正文
jquery相关教程

jquery中trigger()和triggerHandler()的区别

发表于2018/8/6 网站制作教程 0条评论 ⁄ 热度 2,054℃

在之前我们分别介绍了trigger()triggerHandler()的使用方法,它们之间既有相同也有区别。

它们的那个之处:

trigger()方法与triggerHandler() 方法类似,不同的是 triggerHandler() 不触发事件的默认行为。

triggerHandler()不会引起事件(比如表单提交)的默认行为。

trigger() 会操作 jQuery 对象匹配的所有元素,而 .triggerHandler() 只影响第一个匹配元素。

由.triggerHandler() 创建的事件不会在 DOM 树中冒泡;如果目标元素不直接处理它们,则不会发生任何事情。

triggerHandler()返回的是事件处理函数的返回值,而不是具有可链性的 jQuery 对象。此外,如果没有处理程序被触发,则这个方法返回 undefined。

triggerHandler()使用示例:

triggerHandler() 与 .trigger() 比较实例:

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>triggerHandler demo</title>
  <script src="/jquery/1.10.2/jquery.min.js">
</script>
</head>
<body>
  <button id="old">.trigger( "focus" )</button>
  <button id="new">.triggerHandler( "focus" )</button><br><br>
  <p>执行 .trigger 后 input 输入框自动获取焦点,触发事件的默认行为,而 .triggerHandler 仅仅
执行了指定的事件浏览器并未执行动作,输入框也没有获取焦点。</p>
  <input type="text" value="将获取焦点">
<script>
  $( "#old" ).click(function() {
    $( "input" ).trigger( "focus" );
  });
  $( "#new" ).click(function() {
    $( "input" ).triggerHandler( "focus" );
  });
  $( "input" ).focus(function() {
    $( "<span>获取焦点!</span>" ).appendTo( "body" ).fadeOut( 1000 );
  });
  </script>
</body>
</html>
  • 暂无评论