澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:JQ部分总计,基础计算

2019-07-21 作者:澳门新萄京赌场网址   |   浏览(122)

一抬手一动脚端 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采纳器,功能最高)(重点)**

$("#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

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

第4个参数能够回顾。

例如:

$("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,事件名

第1个参数: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()方法触发被选成分的钦赐事件类型。但不会实践浏览器暗许动作,也不会时有发惹事件冒泡。)**

$( "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 //鼠标的开关类型:左第11中学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!')

js部分

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')

1、区分轻重缓急写

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!')

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

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',scrollEvent); var scroll伊芙nt=function(){}; //事件销毁 that.desrory=function(){ $('.event_dom').off(); //window 方法的绝迹必须使用事件名称和回调函数,重固然 window 上或者绑定这系统自定义的平地风波和回掉 $(window).off('scroll',scrollEvent); };

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格局也会耳濡目染函数奉行时的上下文。

3、字面量(直接量literal)

打赏帮助小编写出更加多好小说,多谢!

任选一种支付办法

澳门新萄京官方网站 4 澳门新萄京官方网站 5

3 赞 14 收藏 5 评论

test.js

清楚this的关键点正是要对函数调用以及它所处的情状有个明显的思想。那篇小说将会器重于对函数调用的讲解、函数调用怎样影响this以及展示分明景况时周围的牢笼。



12//数字

至于小编: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常用的现象,希望能够对读者有所支持:

5.8 //小数

 LD.log.writeRaw('<strong>This is bold!</strong>');

一、普通函数里的this指向:一般性函数中的this指针指向于调用者;

this 在函数调用中是二个大局对象,全局对象是由奉行的蒙受调节的。在浏览器里它是window对象。

function fn (){

    this.name = '小璇';

    console.log(this);   // 此处打字与印刷window

    console.log(this.name);  // 此处打字与印刷小璇

}

fn();

"hello"

 LD.log.header('With a header');

二、在停车计时器中的this的针对性:

function CreatePerson () {

       this.name = '小璇';

       setInterval(function(){

         console.log(this);

 }, 3000)                                     //   this指向与构造函数创制的对象:this的调用者是new

      // setInterval(this.show, 贰仟);     //  由new来给放大计时器绑定八个函数

      // setInterval(function(){               // this指向于window;因为this是由计时器调起实践的

      //    console.log(this);

      // }, 2000);                                 //把this的指向固定在self变量中

var slef = this;

      setInterval(function(){                 // 此时,self指向的是目的

          self.show();

      }, 2000);

}

CreatePerson.prototype.show = function (){

// console.log('hello');

console.log(this);

}

'hello'

 LD.log.write('write source:<strong>This is bold!</strong>');
 
 for(i in document){
         LD.log.write(i);
  }
});myLog.js[javascript] view plaincopyprint?// JavaScript Document  
 
//myLogger的构造函数  
function myLogger(id){ 
    id=id||"ICLogWindow"; 
 
    //日志窗体的援用  
    var logWindow=null; 
    //创制日志窗体  
    var createWindow=function(){ 
            var browserWindowSize = LD.getBrowserWindowSize(); 
            var top=(browserWindowSize.height-200)/2||0; 
            var left=(browserWindowSize.width-200)/2||0; 
 
            //使用UL  
            logWindow=document.createElement("UL"); 
            //在document下增多一个dom对象UL  
 
            //增加ID进行标识        
            logWindow.setAttribute("id",id); 
 
            //对窗体举办css样式调控  
            logWindow.style.position='absolute'; 
            logWindow.style.top=top 'px'; 
            logWindow.style.left=left 'px'; 
     
            logWindow.style.width='200px'; 
            logWindow.style.height='200px'; 
            logWindow.style.overflow='scroll'; 
             
            logWindow.style.padding='0'; 
            logWindow.style.margin='0'; 
            logWindow.style.border='1px solid black'; 
            logWindow.style.backgroundColor='white'; 
            logWindow.style.listStyle='none'; 
            logWindow.style.font='10px/10px Verdana, Tahoma, Sans'; 
 
            //将窗体增多到页面下面  
            document.body.appendChild(logWindow); 
        } 
 
//向日志窗体中增加一行  
    this.writeRaw=function(message){ 
            //假诺发轫窗体是不设有的,则变动日志窗体  
        if(!logWindow){ 
                createWindow(); 
            } 
//创建li的dom节点  
        var li=document.createElement('LI'); 
 
        //对窗体举行css样式调整  
         
        li.style.padding='2px'; 
        li.style.border='0'; 
        li.style.borderBottom='1px dotted black'; 
        li.style.margin='0'; 
        li.style.color='#000'; 
 
        //      验证message信息  
        if(typeof message == 'undefined'){ 
 
                //在li里面添Gavin本节点。  
                li.appendChild(  
                    document.createTextNode('Message is undefined')     
                    ); 
            }else if(typeof li.innerHTML!=undefined){ 
        //那是另一种艺术的表述  
                    li.innerHTML=message; 
                }else{ 
                        li.appendChild( 
                            document.createTextNode(message)        
                        ); 
                    } 
                logWindow.appendChild(li); 
                return true; 
        }; 

//对象字面量的不二等秘书技宣示特权方法  
//向日志窗体中增多一行,向输入的内容举行简劣势理  
myLogger.prototype={ 
     
    write:function(message){ 
        if(typeof message=='string' && message.length==0 ){ 
                return this.writeRaw('未有输入新闻'); 
             
        } 
        if(typeof message !='string'){ 
                if(message.toString){ 
                    return this.writeRaw(message.toString()); 
                }else{ 
                    return this.writeRaw(typeof message); 
                } 
            } 
//将不仅号小于号进行正则转变来HTML标识  
        message=message.replace(/</g,"<").replace(/>/g,">"); 
        return this.writeRaw(message); 
    }, 
    header:function(message){ 
        message='<span style="color:white;background-color:black;font-weight:bold;padding:0px 5px;">' message '</span>'; 
        return this.writeRaw(message); 
        } 
}; 
window['LD']['log'] = new myLogger(); 
// JavaScript Document

三、在对象方法中的this指针指向:

var name = '小李子';

var per = {

      name: '小璇',

      fn: function () {

            console.log(this.name);

       }

}

per.fn();               //this指针指向了per

var obj = per.fn;  

window.obj();        // fn方法交给了window对象调用,所以艺术中的this指针指向了window对象

true

//myLogger的构造函数
function myLogger(id){
 id=id||"ICLogWindow";

四、在构造函数中的调用:

function CreatePerson() {

this.name = '小璇';

// 假若在构造函数中向外重回四个对象,则该目的会覆盖由new成立出来的对象

// return {

//    name: '小李子'

// }

// 构造函数无法向外再次来到援引类型,因为重回的援引类型会替换掉new创造出来的靶子

// 若是向外重返的是null对象,则不会交替

return null;

}

// 因为new调用函数实行时:1、开发一块内部存款和储蓄器空间;2、把函数中this的针对性指为那块空间;3、把创建出来的半空中交给变量

var per = new  CreatePerson();

console.log(per.name);

/js/gi//正则

 //日志窗体的援用
 var logWindow=null;
 //创制日志窗体
 var createWindow=function(){
         var browserWindowSize = LD.getBrowserWindowSize();
   var top=(browserWindowSize.height-200)/2||0;
   var left=(browserWindowSize.width-200)/2||0;

五、在事变函数中的this的对准:

function Btn() {

      this.b = 23;     这里的this指向调用者new

      var _this = this;  //凝固指针

      document.getElementById('btn').onclick = function (){

      // this.show();

      _this.show();   //这里的指针依然是new,并不是点击事件的竹签

      };

}

window.onload = function () {

      new Btn();

}

null//空

   //使用UL
   logWindow=document.createElement("UL");
   //在document下增添三个dom对象UL

六、事件函数中this的指向

var btn = document.querySelector('#btn');

btn.onclick = function () {

console.log(this);

// 借使事件函数中嵌套了函数,该函数又并发了this指针,则该指针指向window对象

   hello()    // 此时下方被调用的hello函数里的this指向window

// hello.call(this);    //此时下方被调用的hello函数里this指向点击事件的价签,使用call扭转this的指向到当下作用域的this;

}

function hello() {

this.style.backgroundColor = 'red';

}

{x:1,y:2}

   //增加ID实行标志     
   logWindow.setAttribute("id",id);

结论:

[1,2,3,4]

   //对窗体举办css样式调节
   logWindow.style.position='absolute';
   logWindow.style.top=top 'px';
   logWindow.style.left=left 'px';
 
   logWindow.style.width='200px';
   logWindow.style.height='200px';
   logWindow.style.overflow='scroll';
   
   logWindow.style.padding='0';
   logWindow.style.margin='0';
   logWindow.style.border='1px solid black';
   logWindow.style.backgroundColor='white';
   logWindow.style.listStyle='none';
   logWindow.style.font='10px/10px Verdana, Tahoma, Sans';

因为函数调用对this有最大的影响,从未来起,不要再问您和谐:

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

   //将窗体加多到页面上面
   document.body.appendChild(logWindow);
  }

this是从哪个地方来的?

5、分号能够大概不过或然会时有发生难题,js会自动补;

//向日志窗体中增添一行
 this.writeRaw=function(message){
         //假诺起始窗体是不设有的,则转移日志窗体
  if(!logWindow){
    createWindow();
   }
//创建li的dom节点
  var li=document.createElement('LI');

而要问本身:函数是怎么被调用的

var y = x f

  //对窗体举办css样式调节
  
  li.style.padding='2px';
  li.style.border='0';
  li.style.borderBottom='1px dotted black';
  li.style.margin='0';
  li.style.color='#000';

对于有指向的函数,问问您自身:

(a b).toString()

  //  验证message信息
  if(typeof message == 'undefined'){

在这几个有针对的函数被定义的意况,this是何许?

等价于

          //在li里面添Gavin本节点。
    li.appendChild(
     document.createTextNode('Message is undefined')   
     );
   }else if(typeof li.innerHTML!=undefined){
        //那是另一种方法的公布
     li.innerHTML=message;
    }else{
      li.appendChild(
       document.createTextNode(message)   
      );
     }
    logWindow.appendChild(li);
    return true;
  };
}
//对象字面量的秘籍宣示特权方法
//向日志窗体中增多一行,向输入的内容实行简易管理
myLogger.prototype={
 
 write:function(message){
  if(typeof message=='string' && message.length==0 ){
          return this.writeRaw('未有输入消息');
   
  }
  if(typeof message !='string'){
    if(message.toString){
     return this.writeRaw(message.toString());
    }else{
     return this.writeRaw(typeof message);
    }
   }
//将超过号小于号实行正则调换来HTML标识
  message=message.replace(/</g,"<").replace(/>/g,">");
  return this.writeRaw(message);
 },
 header:function(message){
  message='<span style="color:white;background-color:black;font-weight:bold;padding:0px 5px;">' message '</span>';
  return this.writeRaw(message);
  }
};
window['LD']['log'] = new myLogger();LD.js[javascript] view plaincopyprint?// JavaScript Document  
if(document.all && !document.getElementById){ 
    document.getElementById=function(id){ 
        return document.all[id]; 
        } 
    } 
 
if(!String.repeat){ 
        String.prototype.repeat=function(l){ 
            return new Array(l 1).join(this); 
            } 
    } 
 
if(!String.trim){ 
        String.prototype.trim=function(){ 
                return this.replace(/^s | $/g,''); 
            }  
    } 
 
(function(){ 
    //构造命名空间  
    window['LD']={} ;   
     
    function $(){ 
        var elements=new Array(); 
        //arguments当前函数的参数数组。参数  
        for(var i=0;i<arguments.length;i ){ 
                var element=arguments[i]; 
                 
                if(typeof element=='string'){ 
                        element=document.getElementById(element); 
                    } 
                if(arguments.length==1){ 
                    return element; 
                    } 
                elements.push(element); 
        } 
        return elements; 
    } 
    //注册命名空间  
    window['LD']['$']=$; 
     
    function getElementsByClassName(className,tag){ 
            parent=parent || document; 
            if(!(parent=$(parent))) return false; 
             
             
            //var allTags=document.getElementsByTagName(tag);  
            //对tag实行过滤,把tag的目的全抽出来  
            var allTags=(tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag); 
            var matchingElements=new Array(); 
             
            className=className.replace(/-/g,"\-"); 
            var regex=new  RegExp("(^|\s)" className "(\s|$)"); 
             
            var element; 
            for(var i=0;i<allTags.length;i ){ 
                    element=allTags[i]; 
                    if(regex.test(element.className)){ 
                            matchingElements.push(element); 
                        } 
                } 
                 
                //重返这些数组  
            return matchingElements; 
        } 
        window['LD']['getElementsByClassName']=getElementsByClassName; 
         
        function bindFunction(ojb,func){ 
                return function(){ 
                        func.apply(obj,arguments); 
                    } 
            }; 
        window['LD']['bindFunction']=bindFunction; 
         
    function getBrowserWindowSize(){ 
            var de=document.documentElement; 
            return{ 
                    'width':( 
                        window.innerWidth 
                        || (de && de.clientWidth) 
                        || document.body.clientWidth), 
                    'heigth':( 
                        window.innerHeight 
                        || (de && de.clientHeight) 
                        || de && document.body.clientHeight) 
                } 
        }; 
        //注册本事件  
    window['LD']['getBrowserWindowSize']=getBrowserWindowSize; 
     
     
    function addEvent(node,type,listener){ 
            if(!(node=$(node))) return false; 
             
            if(node.addEventListener){ 
                node.addEventListener(type,listener,false); 
                return true; 
               }else if(node.attachEvent){ 
                    node['e' type listener]=listener; 
                    node[type listener]=function(){node['e' type listener](window.event);} 
                    node.attachEvent('on' type, node[type listener]); 
                    return true; 
                   } 
               return false; 
        }; 
        //注册本事件  
    window['LD']['addEvent']=addEvent; 
     
})(); 
// JavaScript Document
if(document.all && !document.getElementById){
 document.getElementById=function(id){
  return document.all[id];
  }
 }

这是拍卖this时的不错主张,它们得以让您免于胃痛。

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

if(!String.repeat){
  String.prototype.repeat=function(l){
   return new Array(l 1).join(this);
   }
 }

二、类型、值和变量

if(!String.trim){
  String.prototype.trim=function(){
    return this.replace(/^s | $/g,'');
   }
 }

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

(function(){
 //构造命名空间
 window['LD']={} ; 
 
 function $(){
  var elements=new Array();
  //arguments当前函数的参数数组。参数
  for(var i=0;i<arguments.length;i ){
    var element=arguments[i];
    
    if(typeof element=='string'){
      element=document.getElementById(element);
     }
    if(arguments.length==1){
     return element;
     }
    elements.push(element);
  }
  return elements;
 }
 //注册命名空间
 window['LD']['$']=$;
 
 function getElementsByClassName(className,tag){
   parent=parent || document;
   if(!(parent=$(parent))) return false;
   
   
   //var allTags=document.getElementsByTagName(tag);
   //对tag进行过滤,把tag的指标全抽取来
   var allTags=(tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);
   var matchingElements=new Array();
   
   className=className.replace(/-/g,"\-");
   var regex=new  RegExp("(^|\s)" className "(\s|$)");
   
   var element;
   for(var i=0;i<allTags.length;i ){
     element=allTags[i];
     if(regex.test(element.className)){
       matchingElements.push(element);
      }
    }
    
    //重回那么些数组
   return matchingElements;
  }
  window['LD']['getElementsByClassName']=getElementsByClassName;
  
  function bindFunction(ojb,func){
    return function(){
      func.apply(obj,arguments);
     }
   };
  window['LD']['bindFunction']=bindFunction;
  
 function getBrowserWindowSize(){
   var de=document.documentElement;
   return{
     'width':(
      window.innerWidth
      || (de && de.clientWidth)
      || document.body.clientWidth),
     'heigth':(
      window.innerHeight
      || (de && de.clientHeight)
      || de && document.body.clientHeight)
    }
  };
  //注册技艺件
 window['LD']['getBrowserWindowSize']=getBrowserWindowSize;
 
 
 function addEvent(node,type,listener){
   if(!(node=$(node))) return false;
   
   if(node.addEventListener){
       node.addEventListener(type,listener,false);
    return true;
      }else if(node.attachEvent){
        node['e' type listener]=listener;
     node[type listener]=function(){node['e' type listener](window.event);}
     node.attachEvent('on' type, node[type listener]);
     return true;
       }
      return false;
  };
  //注册本领件
 window['LD']['addEvent']=addEvent;
 
})();运维结果:

2、对象类型

 

3、类ArrayFunction Date RegExpError

澳门新萄京官方网站 8

4、js深入分析器中融合为一了排放物回收

总结

5、任性js的值都可以转为布尔值

        这么些小例子,基本上把以前所学内容,包蕴基础支撑、面向对象、原型、对象字面量、this、作用域链等知识点全体包含,算是对JavaScript学习的一个总括。学的越来越多,越要找到所学内容之间的维系,学习JS,不只是单独学习JS,更要联络此前所学的面向对象、C#、CSS等学问,让知识像路一样出入无间,工夫“书越读越薄”。未来能做的,正是继续营造小编的知识网。

undefined

 作者:lidaasky  

null

myLog.js:首要功能是创设myLogger构造...

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是前段时间调用的对象

澳门新萄京官方网站:JQ部分总计,基础计算。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选用器,功用最高)(重点)**

$("#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)")列表中的第1个要素(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()方法触发被选成分的内定事件类型。但不会推行浏览器私下认可动作,也不会时有发惹祸件冒泡。)**

$( "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 //鼠标的开关类型:左第11中学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){} )

参数的依次是一样的。

本文由澳门新萄京官方网站发布于澳门新萄京赌场网址,转载请注明出处:澳门新萄京官方网站:JQ部分总计,基础计算

关键词: