>

未经作者许可,用于显示日志对象

- 编辑:澳门博发娱乐官网 -

未经作者许可,用于显示日志对象

活动端 h5 付出相关内容总括:JavaScript 篇

2016/01/24 · HTML5, JavaScript · 5 评论 · 移动端

本文作者: 伯乐在线 - zhiqiang21 。未经小编许可,禁止转发!
应接加入伯乐在线 专栏撰稿者。

明日我们来归纳运用一下所学知识,来促成二个JavaScript日志操作对象的实例,大家须求的是那多少个文件:

总结

js部分

生龙活虎、词法结构

1、区分轻重缓急写

2、注意//单行/*多行注释*/

3、字面量(直接量literal)

12//数字

5.8 //小数

"hello"

'hello'

true

/js/gi//正则

null//空

{x:1,y:2}

[1,2,3,4]

4、标示符(变量)和保留字

5、分号能够回顾不过可能会生出难点,js会自动补;

var y = x+f

(a+b).toString()

等价于

var y =  x+f(a+b).toString();

二、类型、值和变量

1、原始类型数字、字符串和布尔null空undefined未定义

2、对象类型

3、类ArrayFunction Date RegExpError

4、js拆解深入分析器中融为黄金年代体了垃圾堆回收

5、任意js的值都能够转为布尔值

undefined

null

0

-0

NaN

""都被改造为false

6、包装对象

var s=  "hello";//原始类型(未有主意卡塔 尔(阿拉伯语:قطر‎

s.len = 4;//当调用原始类型的习性或方法的时候(原始类型是未曾品质和措施的卡塔尔国

//只要援引了字符串的性质或措施,就能够调用new String(s)把原始类型,包装成靶子

//将来调用s.len是调用String对象的性质和方法,生机勃勃旦引用结束,新成立的一时对象会销毁

var n =  s.len;//此时为undefined

alert(n);

//调用字符串布尔数字的习性或格局时,成立的权且对象。是包裹对象

显示定义包装对象var S = new String("hello")

var s  = "hello";是差别的

7、==和===

8、类型转变

var n = 17;

alert(n.toString(2));//二进制10001

alert(n.toString(8));//021

alert(n.toString(16));  //0x21

alert(n.toString(10));alert(n.toString());

9、toString()valueOf()

var date = new  Date(2011,1,3);

date.valueOf()重返阿秒数代表的岁月

10、js是动态类型var n = 10;程序运转期间才会鲜明变量的品类

11、变量功用域

函数功效域和申明提前

函数内定义的变量注解自动提前到函数最上部

12、效能域链scope chain

在不带有函数的函数体内,成效域链有两个对象,第三个是概念函数

参数和局部变量的对象,第一个是全局对象。

在一个嵌套函数体内,功效域链上至罕有七个对象。

概念一个函数时,它保存了多个成效域链。调用函数时,它成立叁个

新的靶子存款和储蓄它的有些变量,并将这一个目的增添到保存的特别效率域链

上,同不经常间创造一个新的越来越长的象征函数调用效率域的“链”。对于嵌套函数

老是调用外界函数时,内部函数会重复定义三回。每趟调用外界函数的时候

效果域链是不一样的。

13、deleteinevalvoid

第五章对象

1、对象的基本操作createsetquery delete testenumerate

2、对象的属性脾性可写可枚举可配置(是还是不是可去除卡塔 尔(阿拉伯语:قطر‎

3、对象的目的性格

对象的原型prototype

对象的类标识对象类型的字符串

对象的扩大标识是或不是可增添新属性

//创立对象的二种办法

4、对象直接量

var empty = {};

var point =  {x:0,y:0};

5、new创立对象

var o = new  Object();//空对象和{}相仿

var a = new  Array();

6、Object.create()

var o1 =  Object.create({x:1,y:2});//o1世袭自对象原型{x:1,y:2}

var o2 =  Object.create(null);//o2不继续任何性质和措施

var o3 =  Object.create(Object.prototype);

//空对象和{} new Object()相仿

7、属性的操作作为关乎数组的靶子

object.property

object["property"]散列映射字典关联数组

8、继承

js的世袭只可以从父类获取属性的值,而不可能改良原型链

若果指标book为null或undefined

book.subtitle.length会报错

解决措施

var len = book && book.subtitle  && book.subtitle.length;

剔除属性

delete book.subtitle

检查测验属性inhasOwnPreperty()propertyIsEnumerable()

var o = {x:1};

"x" in o

"toString" in o

hasOwnPreperty();推断属性是还是不是是自个儿的。世襲属性再次来到false

propertyIsEnumerable()唯有是自有品质,并可枚举

得到具备属性

Object.keys()

Object.getOwnPropertyNames()

9、属性getter和setter

var o = {

x: 0,

y: 1,

set r(value) { value = this.r;},

get r() { return this.x + this.y;}

};

x数据属性,r存取器属性

10、属性的性状ecmascript5老的ie不辅助如下用法

数码属性的特色:值value可写性writable

可枚举enumerable

可配置configurable

存取器属性个性:getset

可枚举enumerable

可配置configurable

//返回{value:1,writable:true,emunerable:true,configurable:true}

Object.getOwnPropertyDescriptor({x:1},x)

//查不到属性再次回到undefined

安装属性的特性无法改良世袭的习性本性

Object.defineProperty()

//设置数不胜数属性

var o = {};

Object.defineProperty(o,"x",{

value:1,

writable:true,

emunerable:false,

configurable:true

})

//设置只读

Object.defineProperty(o,"x",{writable:false})

修正多个属性性情

Object.defineProperties()

扩展Object.prototype书P137

11、对象的三个属性

prototypeclassextensible attribute

询问对象的原型

ecmascript5中Object.getPrototypeOf(o1)

ecmascript3中o1.constructor.prototype

经过对象直接量或new Object()情势开创的指标

包蕴贰个constructor的性格,指Object()的构造函数

constructor.prototype才是当真的原型

p.isPrototypeOf(o)检验对象p是还是不是是o的原型

//获取对象的项目字符串

Object.prototype.toString.call(o1).slice(8,-1)

12、对象的可扩充性

目的是还是不是足以新加属性

Object.preventExtensions()设置对象不可扩充

Object.isExtensible()

Object.seal()除了将对象设置为不可增添,还将质量设置为不可配置

Object.freeze()

除了将对象设置为不可扩张,将质量设置为不可配置,还把质量设置为只读

第8章函数

1、函数调用,方法调用

function t(){ }

t();函数调用this是大局对象严谨方式下是undefined

var o =  {a:function(){}};

o.a()方法调用this是近日调用的指标

2、构造函数调用

var o = new  Object();var o= new Object;

o世袭自构造函数的prototype属性内部的this是此目的

var r = new  o.m();中的this不是o

3、P184函数的实行用到了职能域链,那么些效果域链是函数定义的时候创立的。

嵌套的函数f()定义在这里个成效域链里,在那之中的变量scope是一些变量

效用域链

调用s()将开创函数s的施行境遇(调用对象),并将该对象放置链表起初,

接下来将函数t的调用对象链接在其后,最终是大局对象。然后从链表初始搜索变量name

调用ss()ss() ==>t()==> window

name="lwy";

function  t(){

var name="tlwy";

function s(){

var  name="slwy";

console.log(name);

}

function ss(){

console.log(name);

}

s();

ss();

}

t();

每一回调用函数,都会调换三个新的功能域链。包蕴新的中间变量

jQuery是什么?(了解)

www.github.com

jQuery其实就是一堆的js函数,是平常的js,只可是应用普遍,形成了行当标准。

参考书:锋利的jQuery

学习参谋:

官网:

2. jQuery的重点

2.1 jQuery入口函数(全世界都会)

2.2 jQuery的选用器(其实就是CSS的选拔器)

2.3 jQuery的Dom操作

2.4 jQuery的体裁操作

2.5 jQuery的动画

2.6 jQuery的事件管理

3.jQuery的入口函数

3.1语法

jQuery(document).read(function(){ });

$(function(){ });// **

window.onlaod = function(){}

$ === jQuery // $是jQuery全局函数的外号。

3.2注意事项:(重点)**

document ready:是html文书档案盘算妥善,也等于dom树创造完成了。能够张开dom操作了。

*重要的是:html页面下载实现,并预备安妥*

window.onload:是全部页面全体的能源都加载成功,图片、js、css等...

3.3文书档案加载顺序:(重点)**

下载html页面,拆解解析html标签,碰着link标签加载css,遇到script加载js..

4. jQuery增选选用成分

4.1 jQuery选择器

4.1.1 ID选拔器(js日常尽量用ID选拔器,功能最高卡塔 尔(英语:State of Qatar)(重点)**

$("#id").html();

4.1.2类选择器(重点)**

$(".className").text();

4.1.3标签选取器(重点)**

$('p').click();

4.1.4属性选用器

$("li[id]")、$("li[id='link']").fadeIn();

4.1.5层级选拔器(重点)**

$("li .link").show();

4.1.6老爹和儿子采纳器

$("ul > li")

4.1.7伪类选用器

$("p:first")

$("ul li:eq(3)")

4.1.8表单接受器

$(":text")

$(":checkbox")

$(":checked")

4.2选用器汇总

*$("*")全体因素

#id$("#lastname")id="lastname"的元素

.class$(".intro")所有class="intro"的元素

element$("p")所有

元素

.class.class$(".intro.demo")所有class="intro"且class="demo"的元素

:first$("p:first")第一个

元素

:last$("p:last")最终一个

元素

:even$("tr:even")全数偶数成分

:odd$("tr:odd")全体奇数成分

:eq(index)$("ul li:eq(3)")列表中的第八个成分(index从0起头卡塔尔

:gt(no)$("ul li:gt(3)")列出index大于3的元素greater  than

:lt(no)$("ul li:lt(3)")列出index小于3的元素less  than

:not(selector)$("input:not(:empty)")全体不为空的input成分

:header$(":header")全体标题成分


=====

:animated全部动画成分

:contains(text)$(":contains('W3School')")包括钦点字符串的具备因素

:empty$(":empty")无子(成分卡塔 尔(阿拉伯语:قطر‎节点的持有因素

:hidden$("p:hidden")全体隐敝的

元素

:visible$("table:visible")全数可以见到的报表

s1,s2,s3$("th,td,.intro")全部带有相称选用的要素

[attribute]$("[href]")全数带有href属性的要素

[attribute=value]$("[href='#']")全部href属性的值等于"#"的元素

[attribute!=value]$("[href!='#']")全数href属性的值不对等"#"的元素

[attribute$=value]$("[href$='.jpg']")全数href属性的值包蕴以".jpg"结尾的因素

:input$(":input")全数因素

:text$(":text")所有type="text"的元素

:password$(":password")所有type="password"的元素

:radio$(":radio")所有type="radio"的元素

:checkbox$(":checkbox")所有type="checkbox"的元素

:submit$(":submit")所有type="submit"的元素

:reset$(":reset")所有type="reset"的元素

:button$(":button")所有type="button"的元素

:image$(":image")所有type="image"的元素

:file$(":file")所有type="file"的元素

:enabled$(":enabled")全数激活的input成分

:disabled$(":disabled")全部禁止使用的input成分

:selected$(":selected")全部被增选的input成分

:checked$(":checked")全部被选中的input成分

4.3 jQuery选拔形式

4.3.1收获父级成分

* $(selector).parent();//获取第一手父级

* $(selector).parents('p'); //获取具有父级成分直到html

4.3.2到手子代和后代的因素

* $(selector).children();//获取第一手子成分

* $(selector).find("span"); //获取具备的后裔成分

* find方法可能用的多。**

4.3.3获得同级的要素

* $(selector).siblings()//全体的弟兄节点

* $(selector).next()//下二个节点

* $(selector).nextAll()//后边的具备节点

* $(selector).prev()//前者的兄弟节点

* $(selector).prevAll()//前边的具有的汉子节点

4.3.4过滤方法

* $("div p").last();//取最终三个成分

* $("div p").first();//取第一个成分

* $("p").eq(1);//去第n个元素

*  $("p").filter(".intro");//过滤,选择具有p标签带有.intro类

$('p.intro')

*  $("p").not(".intro");//去除,跟上边的filetr刚巧相反

5.jQuery的Dom操作

5.1获取html的内容

$(selector).text()

-安装或重回所选成分的文书内容

$(selector).html()

-设置或回到所选成分的剧情(包括HTML标记卡塔 尔(阿拉伯语:قطر‎

$(selector).val()-设置或回到表单字段的值

赢得和安装同一方法名,通过不一样参数来规定是收获照旧设置值

$("#blin").text("贝沃汇力");

var txt = $("#blin").text();

使用html来成立dom的点子功能相比高。远大于:document.createElement();**

5.2体裁操作

5.2.1骨干样式操作

$(selector).css("color","red")  |css({})设置或重回相配成分的体裁属性。

$(selector).height()设置或回到相配元素的可观。

$(selector).offset().left=> { left:99, top: 22}重回第二个相称元素相对于文书档案的职位。left,top

$(selector).offsetParent()重临近些日子的永远祖先成分。

$(selector).position()再次回到第八个相配成分相对于父成分的任务。

$(window).scrollLeft()设置或重临匹配成分相对滚动条左边的舞狮。

$(window).scrollTop(0)设置或回到相配元素相对滚动条最上端的舞狮。

$(selector).on("scroll",function(){});

$(selector).width()设置或回到相称成分的增长幅度。

5.2.2样式类操作*尽量操作样式类,少间接操作css属性*

$(selector).addClass('class');向相配的成分增加钦命的类名。

$(selector).removeClass('class');从全数相配的要素中去除全体要么内定的类。

$(selector).toggleClass('class')从相配的因素中加上或删除三个类。

$(selector).hasClass('class')检查相称的要素是或不是有所钦命的类。

5.3性质操作

$(selector).attr("id")设置或回到相配元素的习性和值

$(selector).removeAttr()从有着相称的因素中移除内定的质量。

5.4动态创制

$(selector).append()-在被选成分的尾声插入内容

$(selector).append(node)

$(selector).append('

')

$(selector).appendTo(); -追加到..

$(selector).prepend()-在被选成分的发端插入内容

$(selector).after()-在被选成分之后插入内容

$(selector).before()-在被选成分从前插入内容

案例04都会选拔案例.html

6.事件管理

6.1简易事件绑定方法

.click(hander) .click() //绑定事件抑或触发click事件**

.blur() //失去主题事件,同上

.hover(mousein, mouseleave) //鼠标移入,移出

mouseout:当鼠标离开成分及它的子成分的时都会触发。**

mouseleave:当鼠标离开自身时才会接触,子成分不接触。

.dbclick()双击

change改换,举个例子:文本框发送改造,下来列表发生改动等...

focus获得主旨

keyup, keydown, keypress :键盘键被按下。**

mousedown, mouseover

6.2绑定事件的情势bind方式(不引入,1.7过后的jQuery版本被on替代卡塔 尔(阿拉伯语:قطر‎

语法格式:.bind( eventType [, eventData ], handler )

参数表达

率先个参数:事件类型

其次个参数:传递给事件响应措施的多寡对象,能够简简单单。

事件响应措施中获取数据方式:e.data

其多个参数:事件响应措施

第一个参数能够总结。

例如:

$("p").bind("click",  function(e){

//事件响应措施

});

$("p").on('click',function(e){

//事件响应措施

})

6.3 delegate形式(推荐,质量高,帮忙动态创造的要素卡塔尔

*语法格式:$(selector).delegate(  selector, eventType, handler )

*语法表明:

-第七个参数:selector,子接受器**

-第四个参数:事件类型

-第八个参数:事件响应措施

```

例如:

$(".parentBox").delegate("p", "click", function(){

//为.parentBox下边包车型大巴有所的p标签绑定事件

});

$(".parentBox").on("click","p",  function(){

//为.parentBox上边的装有的p标签绑定事件

});

```

*优势:效能较高*

6.4 one绑定三回事件的秘技

*  .one( events [, data ], handler )

例如:

$( "p" ).one( "click",  function() {

alert( $( this ).text() );

});

$("p").on("click",function(){

$(this).off('click');//事件措施试行了三次后,就即刻解绑事件

})

6.5 on绑定的法子(整合了bind、delegate烈提议使用的办法卡塔尔国卡塔尔国

jQuery1.7版本后,jQuery用on统一了有着的事件管理的诀要

语法格式:$(selector).on( events [, selector ] [, data  ], handler )

参数介绍:

第一个参数:events,事件名

第三个参数:selector,相近delegate

其多个参数:传递给事件响应措施的参数

第多个参数:handler,事件管理方法

例如:

//绑定叁个主意

$( "#dataTable tbody tr" ).on(  "click", function() {

console.log( $( this ).text() );

});

//给子成分绑定事件

$( "#dataTable tbody" ).on(  "click", "tr", function() {

console.log( $( this ).text() );

});

//绑定多个事件的主意

$( "div.test" ).on({

click: function() {

$( this ).toggleClass( "active"  );

}, mouseenter: function() {

$( this ).addClass(  "inside" );

}, mouseleave: function() {

$( this ).removeClass(  "inside" );

}

});

6.6解绑

unbind解绑bind方式绑定的事件(在jQuery1.7以上被on和off取代)

$(selector).unbind(); //解绑不论什么事件

$(selector).unbind("click"); //解绑钦定的事件

undelegate解绑delegate事件

$( "p" ).undelegate(); //解绑全部的delegate事件

$( "p" ).undelegate( "click" ); //解绑全数的click事件

off解绑on方式绑定的事件

$( "p" ).off();

$("P").off('click');

$( "p" ).off( "click", "**" );

//解绑全数的click事件,七个*代表具有

$( "body" ).off( "click", "p",  foo );

6.7触发事件

6.7.1总结事件触发

$(selector).click(); //触发click事件

6.7.2 trigger()方法触发被选成分的钦定事件类型。

$( "#foo" ).trigger( "click" );

6.7.3 triggerHandler触发事件响应措施,不触发浏览器行为(triggerHandler()方法触发被选成分的钦定事件类型。但不会施行浏览器私下认可动作,也不会发惹事件冒泡。卡塔 尔(英语:State of Qatar)**

$( "input" ).triggerHandler( "focus" );

6.8 event对象的简要介绍

event.data //传递的额外事件响应措施的附加参数

event.currentTarget === this //在事变响应措施中同样this,当前Dom对象

event.target //事件触发源,不料定===this

event.pageX //The mouse position relative to  the left edge of the document

event.pageY

event.stopPropagation()//阻止事件冒泡

e.preventDefault(); //阻止暗中同意行为

event.type //事件类型:click,dbclick...

event.which //鼠标的按钮类型:左1中2右3

keydown : a,b,c

event.keyCode// code的c是大写

7. jQuery动画系统

7.1隐形显示

*  $(selector).show(speed,callback);

*  $(selector).hide(1000);

*  $(selector).toggle("slow");

*多少个格局的语法都同后生可畏,参数能够有五个,第叁个是卡通片的快慢,第一个是动漫片实行到位后的回调函数。

*先是个参数是:能够是单词或许纳秒数

7.2淡入淡出

$(selector).fadeIn(speed,  callback)

$(selector).fadeOut(1000)

$(selector).fadeToggle('fast',function(){})

参数等同于7.1

*

$(selector).fadeTo(.5); //淡入到0透明,1不透明

7.3滑动

*  $(selector).slideDown(speed,callback);

*  $(selector).slideUp(speed,callback);

*  $(selector).slideToggle(speed,callback);

7.4动画

*  $(selector).animate({params},speed,callback);

$("button").click(function(){

$("div").animate({

left:'250px',

opacity:'0.5',

height:'150px',

width:'150px'

},2000);

}).animate({},1000);

7.5得了动漫

*  $(selector).stop()

*  $(selector).stop(stopAll,goToEnd);

案例:

8. jQuery补充

8.1 each函数

全局的

$.each(array, function(index, object){})

普通jQuery对象的each方法

$("li").each(function(index, element){} )

在JavaScript中,this是现阶段进行函数的条件。因为JavaScript有4种不一致的函数调用情势:

1.更改页面标题标内容

突发性我们开垦 h5页面包车型地铁时候必要动态的去修改title 的名字,当时利用

JavaScript

document.title='校正后的名字';

1
    document.title='修改后的名字';

就能够消除大家的主题材料。

只怕利用

JavaScript

//当前firefox对 title 参数不协理 history.pushstate(state,title,url);

1
2
    //当前firefox对 title 参数不支持
    history.pushstate(state,title,url);

这种情势不只可以够改革 title 并且能够改进 url 的值,何况将这一个音信存储到浏览器的野史商旅中,当客户使用再次来到按键的时候能够获取进一层好的体会。
当我们在做二个无刷新更新页面数据的时候,能够使用这种艺术来记录页面包车型地铁气象,使得页面能够回降。

        myLog.js:主要作用是营造myLogger构造函数、加多行、增添节点、css调整。

函数调用: alert('Hello World!')

2.日志记录同步发送央浼

有这么的一个情景:
在做电商类的付加物的时候,大家要对各个产物的点击数举行计算(其实正是出发二个ajax须要卡塔 尔(阿拉伯语:قطر‎。PC端的交互作用大比相当多是点击商品后新开页面。此时ajax同步发送或者异步发送对总计未有影响。
只是嵌套在客商端中,长长是在当下 tab 中跳页。假若我们照样选用异步的ajax 须要,有央求会被阻断,计算结果不正确。

        LD.js:重要效用是对台本和字符串制订法则、构造命名空间和基于Id、className收取对象。

情势调用: console.log('Hello World!')

3.JavaScript 中 this 相关

这部分内容后边也是看过很频仍,但是都不可以知道领会深档次的意思。后来看的多了,也就知晓了。

JavaScript

var ab = { 'a': 1, 'b': 2, 'c': 3, abc:function(){ // 对象的法子中,this是绑定的日前目的 var that=this; console.log('abc'); var aaa=function(){ //that指向的是眼前指标 console.log(that.a); //函数中this的值绑定的是大局的window对象 console.log(this); }; aaa(); } }; console.log('---------'); ab.abc();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var ab = {
    'a': 1,
    'b': 2,
    'c': 3,
    abc:function(){
        // 对象的方法中,this是绑定的当前对象
        var that=this;
 
        console.log('abc');
        var aaa=function(){
            //that指向的是当前对象
            console.log(that.a);
            //函数中this的值绑定的是全局的window对象
            console.log(this);
        };
 
        aaa();
    }
};
console.log('---------');
ab.abc();

上述代码浏览器中输出结果如下:

图片 1

JavaScript

var BBB=function(){ var a=0; this.b=1; return this; } var bb= new BBB();

1
2
3
4
5
6
7
    var BBB=function(){
        var a=0;
        this.b=1;
        return this;
    }
 
    var bb= new BBB();

在浏览器中输入一下的内容查看输出:

图片 2

大家对代码做一下改变,如下:

JavaScript

var BBB=function(){ var a=0; this.b=1; } var bb= new BBB();

1
2
3
4
5
6
    var BBB=function(){
        var a=0;
        this.b=1;
    }
 
    var bb= new BBB();

与上述相符的输入,查看一下输出是怎么着

图片 3

由上可以预知 new 操作符的推行进度:

  1. 三个新指标被创设。它继续自BBB.prototype
  2. 布局函数 BBB 被推行。实践的时候,相应的传参会被流传,同期上下文this会被钦点为那个新实例。new BBB 等同于new BBB(), 只好用在不传递任何参数的意况。
  3. 倘若构造函数重返了一个“对象”,那么这些指标会代替一切new出来的结果。假如构造函数没有回到对象,那么new出来的结果为步骤1开立的对象。

    相通景色下构造函数不回去任何值,然而客户只要想覆盖那个重临值,能够团结筛选再次回到二个普通对象来覆盖。当然,重返数组也会覆盖,因为数组也是目的。

        test.js:首要意义是对窗体增多事件,并测量检验mylog中有个别函数的可用性。

构造函数调用: new RegExp('d')

4.JavaScript 中闭包相关

概念在闭包中的函数能够“回忆”它创造时候的条件。

JavaScript

var test=function(string){ return function(){ console.log(string); } }; var tt=test(); tt();

1
2
3
4
5
6
7
var test=function(string){
    return function(){
        console.log(string);
    }
};
var tt=test();
tt();

JavaScript

//li列表点击每风流倜傥行 显示当前的行数 var add_li_event=function(node){ var helper=function(i){ return function(e){ alert(i); } }; for (var i = 0, len =node.length; i < len; i++) { node[i].onclick=helper(i); } };

1
2
3
4
5
6
7
8
9
10
11
12
//li列表点击每一行 显示当前的行数
var add_li_event=function(node){
    var helper=function(i){
        return function(e){
            alert(i);
        }
    };
 
    for (var i = 0, len =node.length; i < len; i++) {
       node[i].onclick=helper(i);
    }
};

        log.html:用于显示日志对象。

隐式调用: alert.call(undefined, 'Hello World!')

5.销毁事件绑定

本身要还好写 js 的平地风波绑定的时候也阅历了一个历程,刚开端的时候onclickbindlivedelegate,on 那样几个经过。

就此会有诸有此类的供给正是因为大家页面上的 DOM 是动态更新。比如说,某块内容是点击页面上的内容显示出来,然后在此块新面世的故事情节上利用click自然是满意不断供给的。

livedelegate 归属较早版本的风云委托(代管事人件卡塔尔的写法。最新版本的 jquery 都以应用on 来做代理事件。效用上比 livedelegate更高。

live是将事件绑定到当前的document ,假设文书档案成分嵌套太深,在冒泡的历程中国电影响属性。
delegateon 的差距便是

JavaScript

jQueryObject.delegate( selector , events [, data ], handler ) //或者 jQueryObject.delegate( selector, eventsMap )

1
2
3
    jQueryObject.delegate( selector , events [, data ], handler )
    //或者
    jQueryObject.delegate( selector, eventsMap )

JavaScript

jQueryObject.on( events [, selector ] [, data ], handler ) //或者 jQueryObject.on( eventsMap [, selector ] [, data ] )

1
2
3
    jQueryObject.on( events [, selector ] [, data ], handler )
    //或者
    jQueryObject.on( eventsMap [, selector ] [, data ] )

想见,使用on的话,子代成分的选用器是可选的。不过 delegate的选拔器是必需的。ondelegate一发的灵敏。

多数时候大家都以只注解事件绑定,而不管事件的消逝。不过在编辑前端插件的时候,我们需求提供事件销毁的主意,提供给插件使用者调用。那样做的补益正是使,使用者对插件越发可控,释放内部存储器,提供页面包车型客车品质。

JavaScript

var that={}; $('.event_dom').on('click','.childK_dom',function(){}); $(window).on('scroll',scroll伊夫nt); var scrollEvent=function(){}; //事件销毁 that.desrory=function(){ $('.event_dom').off(); //window 方法的死灭必得使用事件名称和回调函数,首倘使 window 上大概绑定那系统自定义的事件和回掉 $(window).off('scroll',scroll伊芙nt); };

1
2
3
4
5
6
7
8
9
10
    var that={};
    $('.event_dom').on('click','.childK_dom',function(){});
    $(window).on('scroll',scrollEvent);
    var scrollEvent=function(){};
    //事件销毁
    that.desrory=function(){
        $('.event_dom').off();
        //window 方法的销毁必须使用事件名称和回调函数,主要是 window 上可能绑定这系统自定义的事件和回掉
        $(window).off('scroll',scrollEvent);
    };

设若你以为不错,请访谈github(点我卡塔 尔(阿拉伯语:قطر‎地址给小编大器晚成颗星。多谢啊!

打赏协助本人写出愈来愈多好随笔,多谢!

打赏作者

以下是各种文件代码:

还要各种格局都定义了和煦的上下文,this博览会现得跟大家预料的不太相近。同偶尔间,strict格局也会潜移暗化函数奉行时的上下文。

打赏扶助小编写出更加多好作品,谢谢!

任选大器晚成种支付方式

图片 4 图片 5

3 赞 14 收藏 5 评论

test.js

掌握this的关键点正是要对函数调用以至它所处的情形有个显然的眼光。这篇文章将会器重于对函数调用的表明、函数调用怎样影响this以致浮现分明情状时周边的牢笼。



有关笔者:zhiqiang21

图片 6

做以为对的事体,固然恐怕是错的,那就做感觉本人采纳得起的工作! 个人主页 · 笔者的篇章 · 11 ·      

图片 7

[javascript] view plaincopyprint?//向window对象里面加多一个load事件  
LD.addEvent(window,'load',function(){ 
    LD.log.writeRaw('This is raw'); 
 
    LD.log.writeRaw('<strong>This is bold!</strong>'); 
 
    LD.log.header('With a header'); 
 
    LD.log.write('write source:<strong>This is bold!</strong>'); 
     
    for(i in document){ 
            LD.log.write(i); 
        } 
}); 
//向window对象里面加多三个load事件
LD.addEvent(window,'load',function(){
 LD.log.writeRaw('This is raw');

下边列举部分this常用的现象,希望得以对读者有所帮助:

本文由胜博发-前端发布,转载请注明来源:未经作者许可,用于显示日志对象