trigger 和 triggerHandler(),自定义事件

Posted knowledge-is-infinite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了trigger 和 triggerHandler(),自定义事件相关的知识,希望对你有一定的参考价值。

  1 trigger 和 triggerHandler(),自定义事件
  2 语法:
  3 $(selector).trigger(event,[param1,param2,...])
  4     1,event  必需。规定指定元素要触发的事件。
  5     2,[param1,param2,...]  可选。传递到事件处理程序的额外参数。
  6 
  7 额外的参数对自定义事件特别有用。
  8 可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。
  9 ========================
 10 triggerHandler() 方法触发被选元素上指定的事件。
 11 
 12 该方法的返回的是事件处理函数的返回值,而不是具有可链性的 jQuery 对象。此外,如果没有处理程序被触发,则这个方法返回 undefined。
 13 
 14 该方法与 trigger() 方法类似,不同的是 trigger() 也触发事件的默认行为(比如表单提交)。
 15 
 16 triggerHandler() 与 trigger() 方法相比的不同之处:
 17     1,它不会引起事件(比如表单提交)的默认行为,
 18     2,.trigger() 会操作 jQuery 对象匹配的所有元素,而 .triggerHandler() 只影响第一个匹配元素。
 19     3,由 .triggerHandler() 创建的事件不会在 DOM 树中冒泡;如果目标元素不直接处理它们,则不会发生任何事情。
 20 ========================
 21 <html>
 22 <head>
 23     <!-- 这里必须引入jQuery.js否则无法正常运行 -->
 24 <script type="text/javascript" src="js/jquery.js"></script>
 25 <script type="text/javascript">
 26     $(document).ready(function()
 27       $("input").select(function()
 28         $("input").after("文本被选中!");
 29       );
 30       $("button").click(function()
 31         $("input").trigger("select");
 32       );
 33     );
 34 </script>
 35 </head>
 36 <body>
 37 <input type="text" name="FirstName" value="Hello World" />
 38 <br />
 39 <button>激活 input 域的 select 事件</button>
 40 </body>
 41 </html>
 42 =================
 43 <html>
 44 <head>
 45     <!-- 这里必须引入jQuery.js否则无法正常运行 -->
 46 <script type="text/javascript" src="/jquery/jquery.js"></script>
 47 <script type="text/javascript">
 48 $(document).ready(function()
 49   $("input").select(function()
 50     $("input").after("文本被选中!");
 51   );
 52   var e = jQuery.Event("select");
 53   $("button").click(function()
 54     $("input").trigger(e);
 55   );
 56 );
 57 </script>
 58 </head>
 59 <body>
 60 <input type="text" name="FirstName" value="Hello World" />
 61 <br />
 62 <button>激活 input 域的 select 事件</button>
 63 </body>
 64 </html>
 65 ==================
 66 <!DOCTYPE html>
 67 <html lang="en">
 68 <head>
 69     <meta charset="UTF-8">
 70     <title>Document</title>
 71 </head>
 72 <body>
 73     <h2>自定义事件trigger</h2>
 74         <div class="left">
 75             <div><span></span><span>0</span>点击次数</div>
 76             <button>直接点击</button>
 77             <button>通过自定义点击</button>
 78         </div>
 79         <!-- 这里必须引入jQuery.js否则无法正常运行 -->
 80         <script src="js/jquery.js"></script>
 81         <script type="text/javascript">
 82 
 83         //点击更新次数
 84         $("button:first").click(function(event,bottonName) 
 85             bottonName = bottonName || first;
 86             update($("span:first"),$("span:last"),bottonName);
 87         );
 88 
 89         //通过自定义事件调用,更新次数
 90         $("button:last").click(function() 
 91             $("button:first").trigger(click,last);
 92         );
 93 
 94         function update(first,last,bottonName) 
 95             first.text(bottonName);
 96             var n = parseInt(last.text(), 10);
 97             last.text(n + 1);
 98         
 99         </script>
100 </body>
101 </html>
102 ================
103 <!DOCTYPE html>
104 <html lang="en">
105 <head>
106     <meta charset="UTF-8">
107     <title>Document</title>
108 </head>
109 <body>
110     <h2>自定义事件triggerHandler</h2>
111     <div class="left">
112         <div id="accident">
113             <a>triggerHandler事件</a>
114             <input type="text">
115         </div>
116         <button>事件冒泡,触发浏览器默认聚焦行为</button><br><br>
117         <button>不会冒泡,不触发浏览器默认聚焦行为</button>
118     </div>
119     <!-- 这里必须引入jQuery.js否则无法正常运行 -->
120     <script src="js/jquery.js"></script>
121     <script type="text/javascript">
122 
123         //给input绑定一个聚焦事件
124         $("input").on("focus",function(event,title) 
125             $(this).val(title)
126         );
127 
128         $("#accident").on("click",function() 
129             alert("trigger触发的事件会在 DOM 树中向上冒泡");
130         );
131         //trigger触发focus
132         $("button:first").click(function() 
133             $("a").trigger("click");
134             $("input").trigger("focus");
135         );
136 
137         //triggerHandler触发focus
138         $("button:last").click(function() 
139             $("a").triggerHandler("click");
140             $("input").triggerHandler("focus","没有触发默认聚焦事件");
141         );
142     </script>
143 </body>
144 </html>
145 ==========以下是triggerHandler()方法============
146 <!DOCTYPE html>
147 <html>
148 <head>
149 <meta charset="utf-8"> 
150 <title>菜鸟教程(runoob.com)</title> 
151 <!-- 这里必须引入jQuery.js否则无法正常运行 -->
152 <script src="js/jquery.js"></script>
153 <script>
154 $(document).ready(function()
155   $("input").select(function()
156     $("input").after("select 事件触发!");
157   );
158   $("button").click(function()
159     $("input").triggerHandler("select");
160   );
161 );
162 </script>
163 </head>
164 <body>
165 
166 <input type="text" value="Hello World">
167 <br><br>
168 <button>触发输入框的 select 事件</button>
169 <p>该方法与 trigger() 方法类似,不同的是 trigger() 也触发事件的默认行为(比如表单提交)。</p>
170 
171 </body>
172 </html>

 

trigger 和 triggerHandler(),自定义事件语法:$(selector).trigger(event,[param1,param2,...])    1,event  必需。规定指定元素要触发的事件。    2,[param1,param2,...]  可选。传递到事件处理程序的额外参数。
额外的参数对自定义事件特别有用。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。========================triggerHandler() 方法触发被选元素上指定的事件。
该方法的返回的是事件处理函数的返回值,而不是具有可链性的 jQuery 对象。此外,如果没有处理程序被触发,则这个方法返回 undefined。
该方法与 trigger() 方法类似,不同的是 trigger() 也触发事件的默认行为(比如表单提交)。
triggerHandler() 与 trigger() 方法相比的不同之处:    1,它不会引起事件(比如表单提交)的默认行为,    2,.trigger() 会操作 jQuery 对象匹配的所有元素,而 .triggerHandler() 只影响第一个匹配元素。    3,由 .triggerHandler() 创建的事件不会在 DOM 树中冒泡;如果目标元素不直接处理它们,则不会发生任何事情。========================<html><head>    <!-- 这里必须引入jQuery.js否则无法正常运行 --><script type="text/javascript" src="js/jquery.js"></script><script type="text/javascript">    $(document).ready(function()      $("input").select(function()        $("input").after("文本被选中!");      );      $("button").click(function()        $("input").trigger("select");      );    );</script></head><body><input type="text" name="FirstName" value="Hello World" /><br /><button>激活 input 域的 select 事件</button></body></html>=================<html><head>    <!-- 这里必须引入jQuery.js否则无法正常运行 --><script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript">$(document).ready(function()  $("input").select(function()    $("input").after("文本被选中!");  );  var e = jQuery.Event("select");  $("button").click(function()    $("input").trigger(e);  ););</script></head><body><input type="text" name="FirstName" value="Hello World" /><br /><button>激活 input 域的 select 事件</button></body></html>==================<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title></head><body>    <h2>自定义事件trigger</h2>        <div class="left">            <div><span></span><span>0</span>点击次数</div>            <button>直接点击</button>            <button>通过自定义点击</button>        </div>        <!-- 这里必须引入jQuery.js否则无法正常运行 -->        <script src="js/jquery.js"></script>        <script type="text/javascript">
        //点击更新次数        $("button:first").click(function(event,bottonName)             bottonName = bottonName || ‘first‘;            update($("span:first"),$("span:last"),bottonName);        );
        //通过自定义事件调用,更新次数        $("button:last").click(function()             $("button:first").trigger(‘click‘,‘last‘);        );
        function update(first,last,bottonName)             first.text(bottonName);            var n = parseInt(last.text(), 10);            last.text(n + 1);                </script></body></html>================<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title></head><body>    <h2>自定义事件triggerHandler</h2>    <div class="left">        <div id="accident">            <a>triggerHandler事件</a>            <input type="text">        </div>        <button>事件冒泡,触发浏览器默认聚焦行为</button><br><br>        <button>不会冒泡,不触发浏览器默认聚焦行为</button>    </div>    <!-- 这里必须引入jQuery.js否则无法正常运行 -->    <script src="js/jquery.js"></script>    <script type="text/javascript">
        //给input绑定一个聚焦事件        $("input").on("focus",function(event,title)             $(this).val(title)        );
        $("#accident").on("click",function()             alert("trigger触发的事件会在 DOM 树中向上冒泡");        );        //trigger触发focus        $("button:first").click(function()             $("a").trigger("click");            $("input").trigger("focus");        );
        //triggerHandler触发focus        $("button:last").click(function()             $("a").triggerHandler("click");            $("input").triggerHandler("focus","没有触发默认聚焦事件");        );    </script></body></html>==========以下是triggerHandler()方法============<!DOCTYPE html><html><head><meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <!-- 这里必须引入jQuery.js否则无法正常运行 --><script src="js/jquery.js"></script><script>$(document).ready(function()  $("input").select(function()    $("input").after("select 事件触发!");  );  $("button").click(function()    $("input").triggerHandler("select");  ););</script></head><body>
<input type="text" value="Hello World"><br><br><button>触发输入框的 select 事件</button><p>该方法与 trigger() 方法类似,不同的是 trigger() 也触发事件的默认行为(比如表单提交)。</p>
</body></html>

以上是关于trigger 和 triggerHandler(),自定义事件的主要内容,如果未能解决你的问题,请参考以下文章

自定义事件.trigger()和.triggerHandler()

trigger 和 triggerHandler(),自定义事件

关于jQuery中的trigger和triggerHandler方法的使用

219 jQuery事件处理: off() 解绑事件,trigger() triggerHandler() 自动触发事件

jQ的select事件和trigger方法的小冲突

jQuery 的自定义事件