一、事件概念

和数据库中的触发器一样,当操作了数据的时候会引发对应的触发器程序执行 一样,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 元素。

三、常见的事件

焦点事件

  1. blur:在元素失去焦点时触发。这个事件不会冒泡;所有浏览器都支持它。
  2. focus:在元素获得焦点时触发。这个事件不会冒泡;所有浏览器都支持它。
  3. focusin:与 focus 等价,但它冒泡。
  4. focusout:与 blur 等价,也冒泡。
  5. 支持 focusin、focusout 的浏览器有:IE5.5+、Safari 5.1+、Opera 11.5+ Chrome。 但只支持 DOM2 级事件处理程序
  6. blur、focusout 的事件目标是失去焦点的元素; focus、focusin 的事件目标是获 得焦点的元素
  7. 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选择器

    1. id选择器:$("#标签ID");
    2. 类选择器:$(".标签class");
    3. 元素选择器:$("标签元素");
    4. 组选择器:$("#标签ID,标签元素,.标签class");(就是多种类型的条件组合在一起)
    5. 后代选择器:$("父标签 标签1");(找到父标签下面的所有标签1)
    6. 子选择器:$("父标签>标签1");(找到父标签下的所有子标签1)
    7. 位置选择器:
      $("标签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)
    8. 属性选择器
      $("标签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 中的事件绑定的更多相关文章

  1. jQuery中的事件绑定方法

    在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...

  2. Jquery中的事件绑定$(&quot;#btn&quot;).bind(&quot;click&quot;,function(){ })

    Jquery中的事件绑定:$("#btn").bind("click",function(){  }) 由于每次都这么调用太麻烦,所以jquery就用$(&qu ...

  3. jQuery 中的事件绑定与取消绑定

    1:在jQuery中使用bind方法进行事件的绑定,bind方法有两个参数,第一个参数是事件的类型例如click,change,keyup,keydown,blur,focus等.第二个参数是一个回调 ...

  4. js和jQuery中的事件绑定与普通事件

    普通事件,是指直接对元素进行事件注册,然后触发 而事件绑定是将事件注册到元素上 两者区别就是在于普通事件不可以重复添加多个事件,若添加也会覆盖,只会触发其中一个事件(最后注册的那个) 而事件绑定是可以 ...

  5. jQuery中是事件绑定方式--on、bind、live、delegate

    概述:jQuery是我们最常用的js库,对于事件的绑定也是有很多种,on.one.live.bind.delegate等等,接下来我们逐一来进行讲解. 本片文章中事件所带的为版本号,例:v1.7+为1 ...

  6. jQuery中的事件绑定的几种方式

    jQuery目前有on(),bind(),delegate(),live()四种绑定方式,但是随着版本的不断更新,有的方式也相应的被淘汰掉 [band()方式绑定] 3.0版本之前的绑定方式比较常用的 ...

  7. 关于jquery中的事件绑定bind()和live()

    live可以说是bind是方法的变种. 二者的主要区别就是live方法的作用机理是事件委托,live方法的作用机理是将事件绑定DOM的根节点上. live方法的处理机制就是把事件绑定在DOM树的根节点 ...

  8. jQuery学习笔记(三)jQuery中的事件

    目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...

  9. jQuery中的事件与动画 (你的明天Via Via)

    众所周知,页面在加载时,会触发load事件:当用户单击某个按钮时,会触发该按钮的click事件. 这些事件就像日常生活中,人们按下开关,灯就亮了(或者灭了),往游戏机里投入游戏币就可以启动游戏一样, ...

随机推荐

  1. XMPP协议之消息回执解决方案

    苦恼中寻找方法 在开始做即时通信时就知道了消息回执这个概念,目的是解决通讯消息因为各种原因未送达对方而提供的一种保障机制.产生这个问题的原因主要是网络不稳定.服务器或者客户端一些异常导致没有接收到消息 ...

  2. 跨平台数据库工具Azure Data Studio

    Azure Data Studio是一种跨平台数据库工具,适用于在Windows,MacOS和Linux上使用Microsoft系列内部部署和云数据平台的数据专业人员.Azure Data Studi ...

  3. mpvue小程序开发之 iconfont图标引入

    背景: mpvue进行小程序项目开发时候,会有很多图标需求,但是小程序官方提供的icon图标库实在有限而且也不利于调样式,所有想到和之前前端项目一样引入iconfont. 图标加入购物车及项目 下载到 ...

  4. 每日分享!~ JavaScript数组去重

    数组去重 数组去重在很多面试的过程中,都是大题出现!网络上出现了很多数组去重的方式.多数的达到了12种以上. 今天我只给大家介绍两种我比较喜欢,比较认可!入手简单的-能解决自己的问题就可以了 好了 , ...

  5. Java的二分搜索树

    定义 二分搜索树是二叉树(不包含重复元素). 二分搜索树的每个节点的值,大于左子树的所有节点的值,小于其右子树的所有节点的值. 每一棵子树也是二分搜索树. 二叉树搜索树必须要有比较,继承Compara ...

  6. 《前端之路》之 初识 JavaScript

    01 初识 JavaScript 作为在码农圈混迹了 四五年的老码畜来说,学习一门新的语言,就仿佛是老司机开新车一样 轻车熟路. 为什么会这么快呢? 因为各种套路啊- 任何一种计算机语言的最开始都是和 ...

  7. 【Android Studio安装部署系列】三十一、从Android studio3.0.0升级到Android studio3.0.1

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 突然想要升级到较高版本.要跟随潮流嘛,不然就落后了. 下载IDE http://www.wanandroid.com/tools/i ...

  8. HttpUtil 【判断网络连接的封装类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 该封装类主要包括以下功能: 判断是否有网络连接.判断是否有可用的网络连接: 判断是否是3G网络.判断mobile网络是否可用: 判断 ...

  9. SpringBoot启动原理及相关流程

    一.springboot启动原理及相关流程概览 springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置.那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 二 ...

  10. SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)

    前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...