jQuery 中的事件绑定
一、事件概念
和数据库中的触发器一样,当操作了数据的时候会引发对应的触发器程序执行 一样,JS 中的事件就是对用户特定的行为作出相应的响应的过程,其实上就是浏览器 监听到用户的某些行为的时候会执行对应绑定程序。
二、事件的绑定
在 html元素上将触发事件的行为和事件响应的程序关联起来的过程就是事件绑 定。在绑定事件的时候需要先取得 html 中的按钮,但是此时html 还没有加载完毕,所以不能取得按钮元素(button)。此时我们可以将js 的导入放到页面的最后(这是之前的方案),也可以使用一个加载事件来解决这一问题。 DEMO:在匿名函数中绑定事件
//使用加载事件(html一旦加载完毕就马上执行“”之后的匿名函数
window.onload=function(){
//在匿名函数中绑定事件,取得按钮对象并且绑定事件
document.getElementById("btn").onclick=login;
}
//登录的函数
function login(username, password){
var name="smith";
var pwd="1234";
if(username==name&&password=Epwd) {
lalert("登录成功");
}else{
alert("用户名密码不正确!");
}
}
DEMO:在body 元素中绑定 onload 事件。
<body onload="load()">
<button id="btn" type="button">登录</button>
</body>
function load() {
//取得按钮对象并且绑定事件
document.getElementById("btn").onclick=login;
}
//登录的函数
function login(username, password){
var name="smith";
var pwd="1234";
if(username==name && password--pwd){
alert("登录成功");
}else{
alert("用户名密码不正确!");
}
}
加载事件就是当html 全部加载完毕之后再触发的事件,此时事件的绑定是在整 个html代码加载完毕之后才执行的。以上的window.onload 事件默认的载体就是 body 元素。
三、常见的事件
焦点事件
- blur:在元素失去焦点时触发。这个事件不会冒泡;所有浏览器都支持它。
- focus:在元素获得焦点时触发。这个事件不会冒泡;所有浏览器都支持它。
- focusin:与 focus 等价,但它冒泡。
- focusout:与 blur 等价,也冒泡。
- 支持 focusin、focusout 的浏览器有:IE5.5+、Safari 5.1+、Opera 11.5+ Chrome。 但只支持 DOM2 级事件处理程序
- blur、focusout 的事件目标是失去焦点的元素; focus、focusin 的事件目标是获 得焦点的元素
- change 事件
鼠标与滚轮事件
click 在用户单击住鼠标按钮或按下回车键时触发。 触发顺序 mousedown mouseup click,如果 mousedown、mouseup 其中之一被取消,就不会触发 click 事件。 mousedown 用户按下了任意鼠标按钮时触发。 mouseup 用户释放按钮时触发 mouseenter 在鼠标光标从元素外部首次移动到元素范围之内时触发。不冒泡, 而且在光标移动到后代元素上不会触发。DOM2 级事件并没有定义这个事,但 DOM3 级事件将它纳入了规范。IE、Firefox9+和Opera 支持这个事件。 mouseleave 在位于元素上方的鼠标光标移动到元素范围之外时触发。不冒泡,而 且在光标移动到后代元素上不会触发。DOM2 级事件并没有定义这个事,但 DOM3 级事件将它纳入了规范。IE、Firefox9+ 和 Opera 支持这个事件。 mouseover 在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边 界之内时触发。不能通过键盘触发这个事件。 mouseout 在鼠标指针位于一个元素上方,然后用将其移入另一个元素时触发。 又移入的另一个元素可能位于前一个元素的外部,也可能是这个元素的子元素。 不能通过键盘触发这个事件。
四、jQuery 中的事件绑定
在之前绑定事件的时候需要在 html中使用onxxxx 的形式去绑定,这种操作有一个 缺点,让html代码显得混乱(html只负责内容的描述)。 那么最好的方式是将要绑定事件的元素选择出来然后在 js 中实现绑定,现在可以使用jq 实现这一操作,而且 jq 的事件绑定很灵活。 DEMO:使用jQuery 绑定单击事件 1、第一种绑定方式,用jQuery的加载事件
$(function () {
// 绑定删除事件
$("button").click(function () {
alert("绑定了一个单机事件!");
})
})
2、第二种绑定方式
$(function () {
//绑定删除事件
$("button").click(remove);
})
function remove(){
alert("删除数据");
}
3、第三种绑定方式
$(function(){
$("button").on("click", function(){
alert("删除数据");
});
})
4、第四种绑定方式
$(function(){
$("button").bind("click", function(){
alert("删除数据");
});
以上的所有绑定都只是为一个按钮绑定事件 DEMO:为多个元素绑定事件,实现同时删除(淡出)页面显示
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!--表示样式可以根据设备的大小自适应-->
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Insert title here</title>
<script src="js/jquery.min.js"></script>
<script src="js/newdui1.js"></script>
<script>
$(function(){
$("button").click(removeById);
})
function removeById(){
var flag=window.confirm("你确定要删除吗?")
if (!flag) {return};
var parentsTr=$(this).parents("tr");
$(this).parents("tr").fadeOut('slow', function() {
parentsTr.remove();
console.log($("tr").length);
});
}
</script>
</head>
<body>
<table border="1">
<tr><td>编号</td><td>姓名</td><td>职位</td><td>薪资</td><td>操作</td></tr>
<tr><td>7369</td><td>第三</td><td>工人</td><td>5000</td><td><button type="button">删除</button></td></tr>
<tr><td>7521</td><td>张三</td><td>司机</td><td>5000</td><td><button type="button">删除</button></td></tr>
<tr><td>7788</td><td>李四</td><td>职员</td><td>5000</td><td><button type="button">删除</button></td></tr>
<tr><td>7346</td><td>五一</td><td>经理</td><td>5000</td><td><button type="button">删除</button></td></tr>
<tr><td>7839</td><td>小二</td><td>老板</td><td>5000</td><td><button type="button">删除</button></td></tr>
<tr><td>7567</td><td>大哥</td><td>员工</td><td>5000</td><td><button type="button">删除</button></td></tr>
</table>
</body>
</html>
五、JQuery选择器
- id选择器:$("#标签ID");
- 类选择器:$(".标签class");
- 元素选择器:$("标签元素");
- 组选择器:$("#标签ID,标签元素,.标签class");(就是多种类型的条件组合在一起)
- 后代选择器:$("父标签 标签1");(找到父标签下面的所有标签1)
- 子选择器:$("父标签>标签1");(找到父标签下的所有子标签1)
- 位置选择器:
$("标签a:first");(找到第一个标签a)
$("标签a:last");(找到最后一个标签a)
$("标签a:even");(找到序数为偶数标签a)
$("标签a:odd");(找到序数为奇数标签a)
$("标签a:eq(idenx)");(找到索引为index的标签a)
$("标签a:lt(idenx)");(找到索引小于index的标签a)
$("标签a:gt(idenx)");(找到索引大于index的标签a) - 属性选择器
$("标签a[属性x]");(找到带有属性x的标签a)
$("标签a[属性x='数值1']");(找到属性x等于数值1的标签a)
$("标签a[属性x^='数值1']");(找到属性x以数值1开头的标签a)
$("标签a[属性x*='数值1']");(找到属性x值包含数值1的标签a)
$("标签a[属性x!='数值1']");(找到属性x值不等于包含数值1的标签a)
jQuery 中的事件绑定的更多相关文章
- jQuery中的事件绑定方法
在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...
- Jquery中的事件绑定$("#btn").bind("click",function(){ })
Jquery中的事件绑定:$("#btn").bind("click",function(){ }) 由于每次都这么调用太麻烦,所以jquery就用$(&qu ...
- jQuery 中的事件绑定与取消绑定
1:在jQuery中使用bind方法进行事件的绑定,bind方法有两个参数,第一个参数是事件的类型例如click,change,keyup,keydown,blur,focus等.第二个参数是一个回调 ...
- js和jQuery中的事件绑定与普通事件
普通事件,是指直接对元素进行事件注册,然后触发 而事件绑定是将事件注册到元素上 两者区别就是在于普通事件不可以重复添加多个事件,若添加也会覆盖,只会触发其中一个事件(最后注册的那个) 而事件绑定是可以 ...
- jQuery中是事件绑定方式--on、bind、live、delegate
概述:jQuery是我们最常用的js库,对于事件的绑定也是有很多种,on.one.live.bind.delegate等等,接下来我们逐一来进行讲解. 本片文章中事件所带的为版本号,例:v1.7+为1 ...
- jQuery中的事件绑定的几种方式
jQuery目前有on(),bind(),delegate(),live()四种绑定方式,但是随着版本的不断更新,有的方式也相应的被淘汰掉 [band()方式绑定] 3.0版本之前的绑定方式比较常用的 ...
- 关于jquery中的事件绑定bind()和live()
live可以说是bind是方法的变种. 二者的主要区别就是live方法的作用机理是事件委托,live方法的作用机理是将事件绑定DOM的根节点上. live方法的处理机制就是把事件绑定在DOM树的根节点 ...
- jQuery学习笔记(三)jQuery中的事件
目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...
- jQuery中的事件与动画 (你的明天Via Via)
众所周知,页面在加载时,会触发load事件:当用户单击某个按钮时,会触发该按钮的click事件. 这些事件就像日常生活中,人们按下开关,灯就亮了(或者灭了),往游戏机里投入游戏币就可以启动游戏一样, ...
随机推荐
- #Java学习之路——基础阶段二(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- PMBook - 6.项目进度管理
6.3 排列活动顺序 6.3.1 排列活动顺序:输入 6.3.1.1 项目管理计划 6.3.1.2 项目文件 6.3.1.3 事业环境因素 6.3.1.4 组织过程资产 6.3.2 排列活动顺序: ...
- Python爬虫入门教程 41-100 Fiddler+夜神模拟器+雷电模拟器配置手机APP爬虫部分
爬前叨叨 从40篇博客开始,我将逐步讲解一下手机APP的爬虫,关于这部分,我们尽量简化博客内容,在这部分中可能涉及到一些逆向,破解的内容,这部分尽量跳过,毕竟它涉及的东西有点复杂,并且偏离了爬虫体系太 ...
- BannerDemo【图片轮播图控件】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下一个开源库youth5201314/banner的运用.具体用法请阅读<youth5201314/banner& ...
- seg:NLP之正向最大匹配分词
已迁移到我新博客,阅读体验更佳seg:NLP之正向最大匹配分词 完整代码实现放在我的github上:click me 一.任务要求 实现一个基于词典与规则的汉语自动分词系统. 二.技术路线 采用正向最 ...
- Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- 西安活动 | 4月20日「拥抱开源,又见.NET :云时代 • 新契机」
云计算日渐兴起,成为提升企业效率和生产力的最终解决方案,而云时代也为软件开发模式带来了翻天覆地的变化.可以说 .NET Core就是这个时代催生的产物.自2016年 .NET Core 1.0 发布以 ...
- 二维剪板机下料问题(2-D Guillotine Cutting Stock Problem) 的混合整数规划精确求解——数学规划的计算智能特征
二维剪板机下料问题(2-D Guillotine Cutting Stock Problem) 的混合整数规划精确求解——数学规划的计算智能特征 二维剪板机下料(2D-GCSP) 的混合整数规划是最优 ...
- java基础(十)-----Java 序列化的高级认识
将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ...
- RequireJS入门级_RequireJS能给我们带来什么帮助?
前言:其实很早前就已经接触和了解到RequireJS了,当时只是大概明白它能用来控制JS的加载顺序,即:页面一定要先加载这个JS,再加载那个JS,对于RequireJS的好处还没有一个真正的体会和认识 ...