trigger和triggerHandler的使用
今天琢磨了好久这个trigger和triggerHandler的用法.在网上搜了好多,不过大都是相互抄袭,毛意思都没有.后来自己做了研究.
trigger:
1.可以用来触发事件.
<input id="guoyansi" value="单击" type="button" />
  $(function(){
                 $("#guoyansi").click(function(){
                     alert("点我干嘛");
                 });
                 //下面的两种情况都可以在页面加载完毕后自动触发
                 $("#guoyansi").click();
                 $("#guoyansi").trigger("click");
             })
2.可以用来传递参数trigger(typeEvent[,data]);
<input id="guoyansi" value="单击" type="button" />
  $(function(){
                 $("#guoyansi").click(function(e,text){
                     text=text||"我是click触发的";
                     alert(text);
                 });
                 $("#guoyansi").trigger("click",["我是trigger触发的"]);
             })
3.传递多个参数:
<input id="guoyansi" value="单击" type="button" />
 $(function(){
                 $("#guoyansi").click(function(e,m1,m2,m3){
                     var text="";
                     if(m1||m2||m3)  text=m1+","+m2+","+m3;
                     else  text="我是click触发的";
                     alert(text);
                 });
                 $("#guoyansi").trigger("click",["m1","m2","m3"]);
             })
4.自定义事件.
<input id="guoyansi" value="单击" type="button" />
<input type="text" id="guoTxt"/>
 $(function(){
                 $("#guoTxt").on("myEvent",function(){//给guoTxt自定义一个myEvent事件
                     alert($(this).val());
                 });
                 $("#guoyansi").click(function(){//单击guoyansi按钮时,触发我们的自定义事件
                     $("#guoTxt").trigger("myEvent");
                 });
             })
5.triggerHandler()的方法在作用上类似于trigger(),但是是有一定的区别的.
1.triggerHandler方法不会引起浏览器默认的行为,而仅仅是执行绑定到focus事件的处理程序.
<input type="button" id="guo" value="trigger"/>
<button type="button" id="yan"value="triggerHandler"/>
<input id="si" type="text" />
  $(function(){
                     $("#guo").bind("click",function(){
                         $("#si").trigger("focus",["trigger"]);
                     });
                     $("#yan").bind("click",function(){
                         $("#si").triggerHandler("focus",["triggerHandler"]);
                     });
                     $("#si").bind("focus",function(e,handler){
                         if(typeof(handler)=="undefined") handler="用户操作";
                         $(this).val(handler);
                     });
                 })    
用谷歌浏览器测试,效果更明显.
单击文本框:

文本框中有光标,并且还有橙色边框.
单击trigger:

效果和单击文本框是一样的.
单击triggerHandler:

只是执行了focus的事件,文本框中没有光标,并且边框也没有变颜色.
2.trigger()对匹配到的所有元素进行操作,triggerHandler()只对第一个元素做处理.
<input type="button" id="guo" value="trigger"/>
<input type="button" id="yan" value="triggerHandler"/>
<input class="si" type="text" />
<input class="si" type="text" />
<input class="si" type="text" />
<input class="si" type="text" />
 $(function(){
      $("#guo").bind("click",function(){
          $(".si").trigger("focus",["trigger"]);
     });
      $("#yan").bind("click",function(){
          $(".si").triggerHandler("focus",["triggerHandler"]);
      });
      $(".si").bind("focus",function(e,handler){
         if(typeof(handler)=="undefined") handler="用户操作";
           $(this).val(handler);
      });
})     
单击trigger按钮:

单击triggerHandler按钮:

3:triggerHandler()方法不会发生冒泡,如果这些事件不被目标元素直接处理,则它什么事情都不做.
<input type="button" id="guo" value="trigger"/>
<input type="button" id="yan" value="triggerHandler"/>
<div class="father" style="width:200px; height:200px; background-color:black;">
<div class="children" style="width:100px; height:100px; background-color:red;"></div>
</div>

 $(function(){
                     $("#guo").bind("click",function(){
                         $(".children").trigger("click");
                     });
                     $("#yan").bind("click",function(){
                         $(".children").triggerHandler("click");
                     });
                     $(".father").click(function(){
                         alert("你单击了父div");
                     });
                     $(".children").click(function(){
                         alert("你单击了子div");
                     });
                 }) 
因为冒泡,单击了trigger按钮后,会弹出2个弹出框;因为不冒泡单击triggerHandler按钮,只会出现一个"你单击了子div"的弹出框.
3.triggerHandler()不返回jQuery对象,而是返回有这个方法的最后一个处理程序的返回值.如果没有返回值,则默认是undefined.
<input type="button" id="guo" value="trigger"/>
<input type="button" id="yan" value="triggerHandler"/>
<div class="father" style="width:200px; height:200px; background-color:black;">
<div class="children" style="width:100px; height:100px; background-color:red;"></div>
</div>

 $(function(){
                     $("#guo").bind("click",function(){
                         $(".children").trigger("click").css("background-color","blue");
                     });
                     $("#yan").bind("click",function(){
                         var a=$(".children").triggerHandler("click");
                         alert(a);
                     });
                     $(".father").click(function(){
                         alert("你单击了父div");
                     });
                     $(".children").click(function(){
                         alert("你单击了子div");
                         return "我来自triggerHandler的返回值";
                     });
                 })     
单击trigger后,红色会变成蓝色:

单击triggerHandler,会有返回值.

trigger和triggerHandler的使用的更多相关文章
- 【jQuery】【转】jQuery中的trigger和triggerHandler区别
		
trigger(event, [data]) 在每一个匹配的元素上触发某类事件. 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器 ...
 - JQ中  trigger()和triggerHandler()区别
		
既然使用了trigger和triggerHandler,那么你应该了解了他们的差别了. trigger():在每一个匹配的元素上触发某类事件. triggerHandler():这个特别的方法将会触发 ...
 - Jquery trigger 与 triggerHandler
		
secying Jquery trigger与triggerHandler trigger: 在每一个匹配的元素上触发某类事件(即触发jQuery对象集合中每一个元素). 这个函数也会导致浏览器同名的 ...
 - jquery的trigger和triggerHandler区别
		
网上关于这个问题都是抄来抄去的,都没怎么说清楚.所以自己做了个测试,供大家参考指教.首先先看API怎么说的 为了检验一下,编写了一个简单的测试代码,如下: <html lang="en ...
 - trigger 和 triggerHandler(),自定义事件
		
trigger 和 triggerHandler(),自定义事件 语法: $(selector).trigger(event,[param1,param2,...]) 1,event 必需.规定指定元 ...
 - trigger()和triggerHandler()
		
trigger()方法触发事件后,还会执行浏览器的默认事件,例如: $('input').trigger("focus); 这一行代码不仅会触发为<input>元素绑定的focu ...
 - jQuery中的trigger和triggerhandler区别
		
$("form :input").blur(function(){ // }).keyup(function(){ $(this).triggerHandler("blu ...
 - trigger和triggerhandler的区别
		
1. trigger会触发默认行为2. trigger会触发所有元素的模拟事件,而triggerHandler只触发一次3. trigger可以链式操作,triggerHandler不能4. trig ...
 - 关于jQuery中的trigger和triggerHandler方法的使用
		
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 
随机推荐
- HTML5的classList API优化对样式名className的操作
			
//添加一个class elem.classList.add(classname); //删除一个class elem.classList.remove(classname); //判断一个class ...
 - 1.2.2 Text_Reverse
			
Text Reverse Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Proble ...
 - HDU 3455
			
http://acm.hdu.edu.cn/showproblem.php?pid=3435 同下题,只是这题是双向边,同时让我认识到了一个问题,一个图拆点做二分图完美匹配的本质是求该图环的并 htt ...
 - 文件的存储GridFS
			
1.存储路径--->可以理解就是存储路径,然后在通过路径来获取文件 将文件放在本地路径(网络路径)下,然后数据库中存储该文件的查找路径 db.log.insert({filename:" ...
 - mos如何工作参考地址
			
https://wenku.baidu.com/view/c118c3fb360cba1aa811da9d.html?qq-pf-to=pcqq.c2c
 - Android Studio - 安卓开发工具 打开后报错集合、修复指南
			
安卓开发工具错误修复 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新 ...
 - hdu2065 "红色病毒"问题 指数型母函数
			
关于指数型母函数的题目,通过用公式并展开得到系数做的吧,取最后两位就是对100取模 #include<stdio.h> int QuickPow(int a,long long n,int ...
 - log4net保存到数据库系列五、新增数据库字段
			
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
 - Jmeter参数跨线程组传递
			
1.利用BeanShell, 请求==>后置==>beanshellpostprocessorScripts内写:props.put("user_name"," ...
 - greasemonkey修改网页url
			
// ==UserScript== // @name JSHE_ModifyFunction // @namespace jshe // @include http://localhost/* // ...