jquery 模拟事件触发的一些总结

元素的大部分事件都是用户触发执行的,比如click事件,mousemove事件,等等

当然,可以通过代码来模拟用户的操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery.min.js"></script>
    <script>
        $(function () {
            $('#btn1').click(function () {
                alert('click first button')
            })

            $('#btn2').click(function () {
                $('#btn1').trigger('click')
            })
        })
    </script>
</head>
<body>
<button id="btn1">click me</button>
<button id="btn2">模拟点击第一个按钮</button>
</body>
</html>

trigger() 方法触发被选元素上指定的事件以及事件的默认行为(比如表单提交)。

triggerHandler()方法同样也能触发被选元素上指定的事件

但是二者也有区别

区别1 .trigger()会操作jQuery对象匹配的所有元素,而triggerHandler()只会影响匹配到的第一个元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery.min.js"></script>
    <script>
        $(function(){
            // 给按钮绑定click事件处理函数
            $("input[type=button]").click(function(event){
                alert($(this).val());
            });

            // 选中的button集合中,触发所有button的click,打印出button1,button2,button3
            $("input[type=button]").trigger("click");
        })
    </script>
</head>
<body>
<input type="button" id="1" value="button1">
<input type="button" id="2" value="button2">
<input type="button" id="3" value="button3">
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery.min.js"></script>
    <script>
        $(function(){
            // 给按钮绑定click事件处理函数
            $("input[type=button]").click(function(event){
                alert($(this).val());
            });
            
            // 选中的button集合中,只触发第一个button的click事件,只打印出button1
            $("input[type=button]").triggerHandler("click");
        })
    </script>
</head>
<body>
<input type="button" id="1" value="button1">
<input type="button" id="2" value="button2">
<input type="button" id="3" value="button3">
</body>
</html>

区别2:由triggerHandler()创建的事件不会在DOM树种冒泡;如果目标元素不直接处理它们,则不会发生任何事情。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script src="js/jquery.min.js"></script>
    <style>
        #outA {
            width: 400px;
            height: 400px;
            border: solid 1px #CDC9C9;
            position: relative
        }

        #outB {
            width: 200px;
            height: 200px;
            border: solid 1px #0000ff;
            top: 50px;
            left: 50px;
            position: absolute;
        }

        #outC {
            width: 100px;
            height: 100px;
            border: solid 1px #FFB90F;
            top: 50px;
            left: 50px;
            position: absolute;
        }
    </style>
    <script>
        $(function () {
            $("#outA").click(function () {
                alert("A");
            });
            $("#outB").click(function () {
                alert("B");
            });
            $("#outC").click(function () {
                alert("C");
            });
            
            // 使用trigger,依次C、B、A
            $("#outC").trigger("click");


        });
    </script>
</head>
<body>
<div id="outA">A
    <div id="outB">B
        <div id="outC">C</div>
    </div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script src="js/jquery.min.js"></script>
    <style>
        #outA {
            width: 400px;
            height: 400px;
            border: solid 1px #CDC9C9;
            position: relative
        }

        #outB {
            width: 200px;
            height: 200px;
            border: solid 1px #0000ff;
            top: 50px;
            left: 50px;
            position: absolute;
        }

        #outC {
            width: 100px;
            height: 100px;
            border: solid 1px #FFB90F;
            top: 50px;
            left: 50px;
            position: absolute;
        }
    </style>
    <script>
        $(function () {
            $("#outA").click(function () {
                alert("A");
            });
            $("#outB").click(function () {
                alert("B");
            });
            $("#outC").click(function () {
                alert("C");
            });

            // 使用trigger,只会打印出C
            $("#outC").triggerHandler("click");

        });
    </script>
</head>
<body>
<div id="outA">A
    <div id="outB">B
        <div id="outC">C</div>
    </div>
</div>
</body>
</html>

区别三:trigger会触发事件的默认行为,而triggerHandler则不会(如表单提交)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery.min.js"></script>
    <script>
        function myvalid()
        {
            var name = $('#name').val()
            if (name== '' || name == null) {
                alert('用户名不能为空')
                $('#name').focus()
                // return false
            }

        }

        $(function () {
            $('#form1').trigger('submit')
            // $('#form1').triggerHandler('submit')
        })
    </script>
</head>
<body>
<form id="form1" action="1.php" method="post" onsubmit="return myvalid()">
    <div>
        <label for="name">用户名</label>
        <input type="text" name="name" id="name">
    </div>
    <input type="submit" value="submit">
</form>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值