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

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

null197

2016-08-11 23:51

//给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",'没有触发默认事件');

    });


写回答 关注

2回答

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

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

    _十年

    那为什么将focus换成click,titie就传入值了?

    2016-09-18 20:45:43

    共 3 条回复 >

  • 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函数也能显示出刚才加的这行文字了

jQuery基础(三)—事件篇

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

89997 学习 · 625 问题

查看课程

相似问题