格劳修斯
2016-11-23 22:37
alert了一下发现 返回的都是undefined
$("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 : 同理 。
我将我们谈论到的两个事件都设置了返回值为某个定值,然后再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
事实上这两个都触发了,但是没有冒泡!但是没有冒泡!但是没有冒泡!
重要的事情说三遍,没冒泡,也就没有作用到上层的<div id="accident">,没作用到<div id="accident">也就不用触发
$("#accident").on("click",function() {
alert("trigger触发的事件会在 DOM 树中向上冒泡");
});
了,所以,不会弹出alert窗口。
说白了,就是一个冒泡的问题。
在某些不希望触发原生事件绑定函数的时候使用
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题