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

为什么点击btn1弹出了三次,第二次和第三次都什么原因

 <div class="left">

        <h4>测试一</h4>

        <div class="aaron">

            选中文字:input

            <input type="text" value="慕课网" />

        </div>

        <button id="bt1">触发input元素的select事件</button>

        

        <h4>测试二</h4>

        <div class="aaron">

            textarea:

            <textarea rows="3" cols="20">用鼠标选中文字</textarea>

        </div>

    </div>

 

    <script type="text/javascript">


    //监听input元素中value的选中

    //触发元素的select事件

    $("input").select(function(e){

        alert(e.target.textContent)

    })

    $("#bt1").click(function(){

        $("input").select();

    })


正在回答

4 回答

1,$("input").triggerHandler('select'); 用这个你会发现只有一次。

2,上面就说明后2次是浏览器的默认行为。jquery内部可能调用了这个方法

$("input")[0].select() ,原生js的select方法,你可以去测试一下,这个方法会调用

2次绑定的函数,这就是3次的原因。

备注:只有鼠标去选择才会只执行一次。用原生js代码的select去选中是二次,用jquery的select就是三次了。

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

UltraNeo

执行$("input").select(); 这一行确实会调用两次,而且改成 $("input").select(function(e){ alert(e.target.value); return false; }) 就只有一次了,不知道这里的return false;为什么可以减少一次调用?
2016-12-04 回复 有任何疑惑可以回复我~

第一次是button的,第二次是

 $("input").select(function(e){

        alert(e.target.value)

    })这个的回调,

第三次是浏览器默认提交的

处理方法,阻止回调(return false;)

兄台这样可以么,如果你有什么见解可以留言给我。

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

暮女神

谢谢谢谢额
2017-06-02 回复 有任何疑惑可以回复我~

你的select事件的触发元素是节点<input>的,与弹出对话框的按钮无关

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

你是单击了弹出框的确定按钮吧。

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

iceminit 提问者

是的呢
2016-08-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么点击btn1弹出了三次,第二次和第三次都什么原因

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