问答详情
源自:7-2 jQuery自定义事件之triggerHandler事件

改了val()的参数,为什么点击第一个按钮,参数不显示,点第二个显示

//给input绑定一个聚焦事件

    $("input").on("focus",function(event,titie) {

        $(this).val(titie)

    });



    //trigger触发focus

    $("button:first").click(function() {

        $("input").trigger("focus",'触发默认事件');

    });


     //triggerHandler触发focus

    $("button:last").click(function() {

        $("input").triggerHandler("focus",'没有触发默认事件');

    });


提问者:null197 2016-08-11 23:51

个回答

  • 三日月之夜
    2016-08-12 09:47:14
    已采纳

    因为第一个按钮绑定的是tigger(),会触发浏览器的默认事件focus()事件。你on("focus",function(event,titie))没有给titie传入值当然不会显示了。

  • UltraNeo
    2016-12-05 01:38:28

    7-1,也就是上一小节,最后一句话是“自定义事件可以传递参数”,那意思就是默认的浏览器事件不能传递参数。$("input").trigger("focus",'触发默认事件'); 这句话里“触发默认事件”就没法被传递过去(但是triggerHandler函数可以传递参数)。

    $("input").on("focus",function(event,titie) {

            $(this).val(titie)

        });

    没有参数的话,title就是空值,因此最后input文本框就没法显示了。另外,可以像上一小节一样,加上这样一句话:title = title || "实在不行就显示我吧"

    那么,即使调用trigger函数也能显示出刚才加的这行文字了