慕圣2251184
2017-04-01 23:32
代码如下
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<input type="text">
<br>
<button>focus传参数</button>
<br>
<button>click传参数</button>
<script type="text/javascript">
$("input").on("focus",function(event,title) {
alert(title) //为什么参数传递失败
});
$("button:first").click(function(){
$("input").trigger("focus","focus传参数");
})
$("input").on("click",function(event,title) {
alert(title)
});
$("button:last").click(function(){
$("input").trigger("click","click传参数");
})
</script>
</body>
</html>
因为trigger会触发浏览器的默认行为 即input的聚焦行为,此时是不能将input设置title值的;而triggerHandler不会触发浏览器的默认行为 即input的聚焦行为,此时是可以将input设置title值的。
就这样。
比如用鼠标点击按钮触发click,是原生事件,没办法传递参数,也不需要在点击按钮的瞬间让用户输入参数, 但是用trigger写条代码触发click就可以传递参数1和参数2,因为顺手一写的事 $('#elem').trigger('click',['参数1','参数2'])
trigger除了能够触发浏览器事件(原生事件),同时还支持自定义事件,并且自定义事件还支持传递参数,
自定义事件支持传递参数,但原生事件(浏览器事件)并不支持相同的形式传递参数,
$("input").trigger("focus","focus传参数");//在这里触发的是原生事件,不支持传递参数,写了没用,所以title的值为空
$("input")..triggerHandler("focus","focus传参数");//触发的是自定义事件,支持传递参数,所以title的值为"focus传参数"
我今天来复习jquery 然后又有点搞不懂这个问题了,,,,结果来这里看到了以前自己写的答案。 赠人玫瑰,手留余香。
因为你用错函数了 这个函数不能传递参数 请用
$("input").focus(11111,function(e) {
alert(e.data)
});
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题