例子里面triggerHandler既没有触发focus也没有触发click,那这个函数有什么用?

来源:7-2 jQuery自定义事件之triggerHandler事件

格劳修斯

2016-11-23 22:37

alert了一下发现 返回的都是undefined

写回答 关注

4回答

  • qq_缔曦_04032696
    2016-11-25 08:55:45
     $("input").on("focus",function(event,title) {
            $(this).val(title);
            return 5;
        });
     $("#accident").on("click",function() {
            alert("trigger触发的事件会在 DOM 树中向上冒泡");
            return 6;
        });
    $("button:first").click(function() {
            //$("a").trigger("click");
            //$("input").trigger("focus");
            alert($("input").triggerHandler("click"))
        });
    $("button:last").click(function() {
           // $("a").triggerHandler("click");
            //$("input").triggerHandler("focus","没有触发默认聚焦事件");
            alert($("input").triggerHandler("focus"));
        });

    显示 ,一个undefined,一个5.

    first_btn  :  input 它没有click事件,所以是undefined,input的上级div id=accident ,它是有click事件的,但是triggerHandler并不冒泡,所以也就无法传到div id=accident 上,所以alert返回的只有undefined

    last_btn  :   同理 。

  • 格劳修斯
    2016-11-24 21:49:58

    我将我们谈论到的两个事件都设置了返回值为某个定值,然后再alert了button:last点击事件的结果,发现triggerHandler指向的input的focus和click事件返回的都是undefined,也就是说什么事件都没有触发。。。

    $("input").on("focus",function(event,title) {return 5; });//如果触发就返回5

    $("#accident").on("click",function() {return 6; });//如果触发就返回6

     alert($("input").triggerHandler("click"));//undefined

     alert($("input").triggerHandler("focus"//undefined


    qq_缔曦_...

    你最后一个是不是写错了啊,我写是可以运行的 不识 undefined

    2016-11-25 08:56:59

    共 1 条回复 >

  • qq_缔曦_04032696
    2016-11-24 20:56:43

    事实上这两个都触发了,但是没有冒泡!但是没有冒泡!但是没有冒泡!

    重要的事情说三遍,没冒泡,也就没有作用到上层的<div id="accident">,没作用到<div id="accident">也就不用触发

    $("#accident").on("click",function() {

            alert("trigger触发的事件会在 DOM 树中向上冒泡");

        });

    了,所以,不会弹出alert窗口。

    说白了,就是一个冒泡的问题。

    格劳修斯

    由于字数限制回复到下面了,意思是这样的: $("input").on("focus",function(event,title) {return 5; });//如果触发就返回5 $("#accident").on("click",function() {return 6; });//如果触发就返回6 alert($("input").triggerHandler("click"));//undefined alert($("input").triggerHandler("focus"//undefined

    2016-11-24 21:51:12

    共 1 条回复 >

  • sr71tao
    2016-11-24 00:14:49

    在某些不希望触发原生事件绑定函数的时候使用

jQuery基础(三)—事件篇

jQuery第三阶段开启事件修炼,掌握对页面进行交互的操作

89997 学习 · 625 问题

查看课程

相似问题