今天琢磨了好久这个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的使用的更多相关文章

  1. 【jQuery】【转】jQuery中的trigger和triggerHandler区别

    trigger(event, [data]) 在每一个匹配的元素上触发某类事件. 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器 ...

  2. JQ中 trigger()和triggerHandler()区别

    既然使用了trigger和triggerHandler,那么你应该了解了他们的差别了. trigger():在每一个匹配的元素上触发某类事件. triggerHandler():这个特别的方法将会触发 ...

  3. Jquery trigger 与 triggerHandler

    secying Jquery trigger与triggerHandler trigger: 在每一个匹配的元素上触发某类事件(即触发jQuery对象集合中每一个元素). 这个函数也会导致浏览器同名的 ...

  4. jquery的trigger和triggerHandler区别

    网上关于这个问题都是抄来抄去的,都没怎么说清楚.所以自己做了个测试,供大家参考指教.首先先看API怎么说的 为了检验一下,编写了一个简单的测试代码,如下: <html lang="en ...

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

    trigger 和 triggerHandler(),自定义事件 语法: $(selector).trigger(event,[param1,param2,...]) 1,event 必需.规定指定元 ...

  6. trigger()和triggerHandler()

    trigger()方法触发事件后,还会执行浏览器的默认事件,例如: $('input').trigger("focus); 这一行代码不仅会触发为<input>元素绑定的focu ...

  7. jQuery中的trigger和triggerhandler区别

    $("form :input").blur(function(){ // }).keyup(function(){ $(this).triggerHandler("blu ...

  8. trigger和triggerhandler的区别

    1. trigger会触发默认行为2. trigger会触发所有元素的模拟事件,而triggerHandler只触发一次3. trigger可以链式操作,triggerHandler不能4. trig ...

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

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. django2 删除图片或其他

    首先从数据库中获取图片的名称,然后拼接图片的物理地址,最后就是删除. # 物理删除图片 d = os.path.dirname(os.path.dirname(os.path.abspath(__fi ...

  2. Qt QML referenceexamples attached Demo hacking

    /********************************************************************************************* * Qt ...

  3. DelaunayTriangulation_VoronoiDiagram_using_OpenCV的实现

    前言 最近project中有关于delaunay的实现问题,查找资料,看到learnopencv这个网站,有很多peoject的实现,本文主要是实现Delaunay Triangulation and ...

  4. Avito Cool Challenge 2018(div1+2)

    A. Definite Game: 题意:输入N,输出最小的结果N-x,其中x不少N的因子. 思路:N=2时,输出2:其他情况输出1:因为N>2时,N-1不会是N的因子. #include< ...

  5. js三级联动

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. Laravel学习之旅(三)

    视图 一.怎么新建视图: 1.视图默认存放路径:resources/views: 2.laravel模板支持原生的PHP,直接可以在resources/views新建一个PHP文件,例如: index ...

  7. android 自动拨打电话 挂断电话代码

    页面布局文件代码  (  res下面的layout下面的activity_main.xml代码 ) <RelativeLayout xmlns:android="http://sche ...

  8. restheart 基本使用

    restheart 是一个方便基于mongodb的restapi 开发框架 参考项目 https://github.com/rongfengliang/restheart-docker-compose ...

  9. ImageCollection

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsImageCollectiontopic The collec ...

  10. REST与RESTFul API最佳实践

    我经常会面试一些做PHP的开发者,让我很奇怪的是,10个人总有8个多不知道什么是REST服务,甚至是没有听说过.但RESTFul API已经是现在互联网里对外开放接口的主流模式,可参考: 豆瓣API  ...