javascript 事件相关使用总结01
javascript 事件相关使用总结01
这里总结一下js事件相关的经验。
addEventLinstener()介绍
target.addEventListener(type, listener[, useCapture]);
var btn01 = document.getElementById("btn01");
btn01.addEventListener("click", function() {
console.log(this);
});
或者
function func() {console.log("func");}
var btn01 = document.getElementById("btn01");
btn01.addEventListener("click", func);
var btn01 = document.getElementById("btn01");
btn01.addEventListener("click", func);
btn01.removeEventListener("click", func);
注意:需要移出的注册事件,addEventListener和removeEventListener的参数必须一样。
//对所有div注册一个点击事件
var divs = document.getElementsByTagName("div");
for (var i=0; i<divs.length; i++) {
divs[i].addEventListener("click", function() {
func();
});
}
btn01.addEventListener("click", function() {
console.log(this);
});
btn01.addEventListener("click", function() {
console.log(this);
});
这样点击事件被看作两个有两个回调注册,会执行两次。
btn01.addEventListener("click", c);
btn01.addEventListener("click", c);
与jquery相关的问题。
$(document).ready(function() {
$("#btn01").click(func);
$("#btn01").click(func);
});
func函数会执行两次。这个是和addEventListener方式不一样的地方之一。用jquery的时候这个问题还是很容易出现的。
EventListener接口的用法
var events = {
handleEvent : function(event) {
switch (event.type) {
case 'click':
//......
break;
case 'dbclick':
//......
break;
default:
break;
}
}
}
btn01.addEventListener("click", events, false);
btn01.addEventListener("dblclick", events, false);
function BtnHandler(element) {
this.element = element;
this.name = "button";
this.handleEvent = function(event) {
switch(event.type) {
case 'click':
this.clickHandler(event);
break;
case 'dblclick':
this.dblclickHandler(event);
break;
}
};
this.clickHandler = function(event) {
console.log("clickHandler");
}
this.dblclickHandler = function(event) {
console.log("dblclickHandler");
}
element.addEventListener('click', this, false);
element.addEventListener('dblclick', this, false);
}
//注册
BtnHandler(btn01);
第二个点useCapture参数。
<button id="btn01" onclick="func();">btn01</button>
function func() {
console.log(this); //这里的this是全局的window
}
这种使用的比较少,但是要注意它的回调函数里面没有绑定this。也就是它回调里面的this指向全局的window
btn01.onclick = function() {};
btn01.onclick = func01;
btn01.onclick = func02;
这样的click事件只能注册最后一个回调函数。
ready onload介绍
<body onload="load();"><img onload="func();" src="xx" />
var div01 = document.getElementById("div01");
var image = new Image();
image.onload = function() {
console.log("img onload");
};
image.src = "1.jpg";
div01.appendChild(image);
$(document).ready(function() {
}
<script>
(function() {
//......这里就是自执行的代码了,也就是一装载就开始执行。
})();
</script>
如果有耗时操作的话。例如下例。ready也是会等到这些执行完成后再响应。这一点需要注意一下。
(function() {
var sum = 0;
for (var i=0; i< 1000000; i++) {
sum += i;
}
console.log(sum);
})();
<body onload="load();load2();load3();">
(function() {
window.onload = function() {
console.log("window.onload");
};
})();
或者
$(document).ready(function() {
$(window).load(function() {
console.log("jquery window load");
});
});
事件委托处理
$(document).ready(function() {
var div01 = document.getElementById("div01");
for (var i=0; i<10; i++) {
var btn = document.createElement("button");
btn.innerHTML = "btn" + i;
btn.addEventListener("click", function() {
//.......
});
div01.appendChild(btn);
}
});
div01.addEventListener("click", function(event) {
console.log(event.target.innerHTML);
});
$("button").live("click", func);
$("div").delegate("button", "click", func);
javascript 事件相关使用总结01的更多相关文章
- javascript 事件相关
1.添加事件 >基本注册方式 <button id="info">click me!</button> var span = document.get ...
- 重温javascript事件机制
以前用过一段时间的jquery感觉太方便,太强大了,各种动画效果,dom事件.创建节点.遍历.控件及UI库,应有尽有:开发文档也很多,网上讨论的问题更是甚多,种种迹象表明jquery是一个出色的jav ...
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...
- JavaScript事件代理和委托(Delegation)
JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...
- 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)
前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JavaScript事件对象与事件处理程序
在学习之前建议请看一下事件流.事件冒泡.事件捕获 一.事件对象 事件对象:在DOM触发事件时,会产生一个事件对象event,这个事件对象包含着所有与事件相关的信息.既然event是事件对象,那么它必然 ...
- JavaScript事件流原理解析
一.为什么会有这一篇的文章 国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国 ...
- Javascript事件模型系列(四)我所理解的javascript自定义事件
被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...
随机推荐
- mysql数据类型 完整性约束 054
创建用户和授权用户权限: # .创建用户: # 指定ip .109的fgf用户登录 '; # 指定ip .开头的fgf用户登录 '; # 指定任何ip的fgf用户登录 '; # .删除用户 drop ...
- element-ui table多选CheckBox参数解析
element-UI里的table表格与多选框CheckBox的组合很常用,官网也给了很多参数,自己总结了一下,方便日后使用 1.简易用法,没有附加的功能 要在表格里使用CheckBox很简单,只需设 ...
- wordpress 后台页面无法显示绑定的台湾语言
问题:当前切换到的语言是English,然后在页面的列表中,分别显示的语言有中文和香港,没有出现台湾的图标,如上图所示 原因:在polylang插件的设置里面,可以看到台湾语言的 Language c ...
- RabbitMQ 很成熟 不是阿里的
简介 官网 http://www.rabbitmq.com RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现 RabbitMQ实现了AMQ ...
- 《C++ Primer(第五版)》知识巩固
运行平台:ubuntu 12.04/GCC 4.8.0 第二章:基本内置类型 1.decltype类型指示符 当我们从表达式的类型来推断要定义的类型时,可以使用decltype()来解析:declty ...
- 前端中用到的图片(png图片)
作为前端工程师,将设计师的设计稿转化为html页面,其中有一个必不可少的环节就是将psd文件中的一些图片随心所欲的使用,而我们经常用到的就是png图片. 第一部分:基本介绍 首先我们先对比几种图片: ...
- 开启Unity项目中VS工程的属性面板
https://www.cnblogs.com/CodeGize/p/7859656.html Unity生成的VS工程一般是无法打开属性面板的.但是事实上,如果使用VS for unity,通过配置 ...
- JS的正则表达式 - RegExp
RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 正则表达式的创建方式 1.文字格式,使用方法如下: /pattern/flags (即:/模式/标记) 2 ...
- DBUtils工具类的使用
DBUtils工具类1.DBUtils工具类,由apache组织提供的工具类,对JDBC做了一些简单封装. 做了查询的封装,把查询的结果封装到List集合 Map集合 JavaBean对象中 做了增删 ...
- Download link in response body does not work--待解决
I am having a problem similar to the ones described in #374 and #1196. I have a service which return ...