为了账号安全,请及时绑定邮箱和手机立即绑定

为什么用focus传递参数获取失败,用click获取成功

代码如下

<!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>

正在回答

4 回答

因为trigger会触发浏览器的默认行为 即input的聚焦行为,此时是不能将input设置title值的;而triggerHandler不会触发浏览器的默认行为 即input的聚焦行为,此时是可以将input设置title值的。

就这样。

6 回复 有任何疑惑可以回复我~
#1

慕圣2251184 提问者

非常感谢!
2017-04-10 回复 有任何疑惑可以回复我~
#2

qq_寻找_13

那要怎么改才能显示出来呢?
2017-06-10 回复 有任何疑惑可以回复我~


比如用鼠标点击按钮触发click,是原生事件,没办法传递参数,也不需要在点击按钮的瞬间让用户输入参数,
但是用trigger写条代码触发click就可以传递参数1和参数2,因为顺手一写的事
$('#elem').trigger('click',['参数1','参数2'])

trigger除了能够触发浏览器事件(原生事件),同时还支持自定义事件,并且自定义事件还支持传递参数,

自定义事件支持传递参数,但原生事件(浏览器事件)并不支持相同的形式传递参数,

$("input").trigger("focus","focus传参数");//在这里触发的是原生事件,不支持传递参数,写了没用,所以title的值为空

$("input")..triggerHandler("focus","focus传参数");//触发的是自定义事件,支持传递参数,所以title的值为"focus传参数"




1 回复 有任何疑惑可以回复我~
#1

小程序魔王

仅个人理解
2018-10-09 回复 有任何疑惑可以回复我~
#2

龙跃马

上一章,button的trigger还传了参数,难道是input不行?
2018-12-26 回复 有任何疑惑可以回复我~

我今天来复习jquery  然后又有点搞不懂这个问题了,,,,结果来这里看到了以前自己写的答案。 赠人玫瑰,手留余香。

2 回复 有任何疑惑可以回复我~
#1

小程序魔王

你再碰到还是不懂,说明你以前就没搞懂
2018-10-09 回复 有任何疑惑可以回复我~

因为你用错函数了  这个函数不能传递参数 请用  

$("input").focus(11111,function(e) {

    alert(e.data)

});


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么用focus传递参数获取失败,用click获取成功

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信