网站首页 > 知识剖析 正文
在 Web 页面经常会有各种事件发生,事件发生后需要进行一些特定处理,即执行特定的函数或者语句。这就需要对事件进行监听,监听事件的常见方式有以下三种,本人将通过实例来具体介绍。
1.HTML标签内联事件
实例1:单击页面 "Hello" 按钮,弹出提示框显示 Hello world!
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<button onclick="alert('Hello world!')">Hello</button>
</body>
</html>
注:在实例1中,事件的监听代码是放在 HTML 标签中,这种方式看起来比较直观,但是这是一种不大提倡的事件监听方式。首先,将视图代码(HTML)与交互代码(Javascript)相结合,意味着每当需要更新功能时,都必须编辑 HTML,这将给代码后期的维护带来很大麻烦。其次,它不具备可扩展性。如果我们要将这个单击功能附加到许多按钮上,那么不仅要用一堆重复的代码来增加页面量,而且还会破坏可维护性。
2.用JavaScript实现事件监听
实例2:单击页面"Hello"按钮,弹出提示框显示Hello world!
<!doctype html>
<html>
<head>
<meta charset-"utf-8">
<title>无标题文档</title>
<script type="text/javascript">
window.onload = function {
var helloBtn = document.getElementByld("helloBtn");
helloBtn.onclick = function() {
alert("Hello world!");
}
}
</script>
</head>
<body>
<button id="helloBtn">Hello</button>
</body>
</html>
3.用jQuery实现事件监听
使用jQuery监听事件有很多种方法,如实例3所示。
实例3:单击页面 "Hello" 按钮,弹出提示框显示 Hello world!
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script src="jquery-3.3.1.js"></script>
<script type="text/javascript">
$(function() {
//jQuery第一种监听事件方法
$("#helloBtn").click(function() {
alert("Hello world!");
});
//jQuery第二种监听事件方法
$("#helloBtn").bind("click",function() {
alert("Hello world!");
});
//jQuery第三种监听事件方法
$("#helloBtn").on("click",function() {
alert("Hello world!");
});
//jQuery第四种监听事件方法
$("body").on({
click: function() {
alert("Hello world!");
}
}, "button");
//jQuery第五种监听事件方法
$("pody").on("click", "button", function() {
alert("Hello world!");
});
});
</script>
</head>
<body>
<button id="helloBtn">Hello</button>
</body>
</html>
注:下面具体分析实例3中用到的 jQuery 事件监听方法。
(1)第一种事件监听方法click(),是一种比较常见的、便捷的事件监听方法。
(2)第二种事件监听方法bind(),已被jQuery 3.0弃用。自jQuery 1.7以来被 on() 方法(即第三种事件监听方法)所取代,虽然在这里也能使用且不报错,而且此方法之前比较常见,但是不鼓励使用它。
(3)第三种事件监听方法on(),从jQuery 1.7开始,所有的事件绑定方法最后都是调用on() 方法来实现的,使用on() 方法实现事件监听会更快、更具一致性。
(4)第四种和第五种方法,监听的是 body 上所有 button 元素的 click 事件。DOM 树里更高层的一个元素监听发生在它的 children 元素上的事件,这个过程叫作事件委托(event delegation)。感兴趣的读者可以查看官方帮助文档。
猜你喜欢
- 2024-12-28 我采访了一位 Pornhub 工程师,聊了这些纯纯的话题
- 2024-12-28 2、jQuery 和 Zepto 的区别?各自的使用场景?(必会)
- 2024-12-28 从Jquery到Vue 一次编程思维的转换
- 2024-12-28 “我希望飞机坠毁,所有人都死!”澳洲男子在樟宜机场口出狂言被控
- 2024-12-28 网页设计师培训课程 网页设计师 培训
- 2024-12-28 鹭江道凌晨惨烈车祸!土方车压扁出租车司机当场身亡
- 2024-12-28 jQuery.com遭恶意攻击,谨防安全威胁
- 2024-12-28 坏消息!重罚CBA许钟豪!连伤广东四大球员,杜锋冲向技术台抗议
- 2024-12-28 学习web前端开发,需要掌握哪些知识?
- 2024-12-28 女子强行带男童进女浴室洗澡遭拒,怒称儿子只有7岁
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)