javascript - click事件内的select事件为什么会触发多次?
高洛峰
高洛峰 2017-04-10 16:28:35
[JavaScript讨论组]
    <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
          $("input").select(function(){
            $("input").after("文本被选中!");
          });
          $("button").click(function(){
            $("input").trigger("select");
          });
        });
    </script>


<body>
    <input type="text" name="FirstName" value="Hello World" />
    <br />
    <button>激活 input 域的 select 事件</button>
</body>

文本框后面会添加“文本被选中!文本被选中!文本被选中!”,为什么会触发多次?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
巴扎黑

其实就是个冒泡问题

$("input").select(function(e){              
    $("input").after("文本被选中!");
    return false;
  });
  $("button").click(function(){
    $("input").trigger("select");
    return false;
  });
迷茫

当你使用鼠标取选择文本框中的文字的时候,当有文字被选中,就会触发一次,第1次选择一个文字,触发,选中2个又被触发...
而当你非手工触发selected事件是,会将当前文本全部选中,只触发一次,从0到全部

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../script/jquery-2.1.3.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function(){
            $("input").select(function(){
                $("input").after("文本被选中!");
            });
            $("button").click(function(){
                $("input").trigger("select");
            });

            document.getElementById("FirstName").addEventListener('select', function() {
                console.log('Selection changed!');
            }, false);

        });
    </script>
</head>
<body>

<input type="text" id="FirstName" name="FirstName" value="Hello World" />
<br />
<button>激活 input 域的 select 事件</button>


</body>
</html>
阿神
用triggerHandler
ringa_lee
//这是 trigger 对select的一种特性: 

// 1: 当你click的时候,会立即执行 $("input").after("文本被选中!"),此时并没有选中文字;
// 你可以这样测试: 当点击的时候,文字并没有选中,但是执行了$("input").after("文本被选中!");
$(document).ready(function(){
  $("input").select(function(){
    $("input").after("文本被选中!");
    return false;
  });
  $("button").click(function(){
    $("input").trigger("select");
  });
});

// 2: 然后再是选中文字,然后以下代码执行; (注意:这是trigger发生的动作);
$("input").select(function(){
    $("input").after("文本被选中!");
  });

// 3: 最后以下这段代码检测到文字被选中,然后执行;
$("input").select(function(){
    $("input").after("文本被选中!");
  });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号