//给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",'没有触发默认事件');
});
因为第一个按钮绑定的是tigger(),会触发浏览器的默认事件focus()事件。你on("focus",function(event,titie))没有给titie传入值当然不会显示了。
7-1,也就是上一小节,最后一句话是“自定义事件可以传递参数”,那意思就是默认的浏览器事件不能传递参数。$("input").trigger("focus",'触发默认事件'); 这句话里“触发默认事件”就没法被传递过去(但是triggerHandler函数可以传递参数)。
$("input").on("focus",function(event,titie) {
$(this).val(titie)
});
没有参数的话,title就是空值,因此最后input文本框就没法显示了。另外,可以像上一小节一样,加上这样一句话:title = title || "实在不行就显示我吧"
那么,即使调用trigger函数也能显示出刚才加的这行文字了