在之前我们分别介绍了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>
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/1039.html