发表于: 2017-04-09 21:30:39

1 1133


今天完成的事情:在家看jq,做老大昨天布置的任务。 
明天计划的事情:开始硬着头皮把任务4写好。每天计划的事。。希望自己能慢慢学好js。学的可能比别人慢,但希望自己不要气馁。还有晚上早点睡觉。。修真路漫漫固然辛苦,可是身体是本钱。
遇到的问题:1.在动态生成dom的过程中,如果用户输入number之后,再次输入number。结果返回两个number相加的dom数量。思路是要在之前先给一个判断,但是判断要怎么写才正确,我试了好久都报错。

2.用on()动态绑定了dom,并改变了dom的属性,但是再次点击无法变回原来的颜色,应该还是要再前面加一个判断。
收获:

一.监听事件有几种方式:

在Javascript中,浏览器一般分为两大类:

① 基于IE内核的浏览器(版本号小于9的IE浏览器)

② 基于W3C内核的浏览器(版本号大于9的IE浏览器、Firefox、Google等浏览器)

1)基本语法:基于IE内核浏览器

dom对象.attachEvent(type,callback,capture) :为元素绑定事件监听程序

参数说明:

type:绑定的事件类型,如onclick、onmouseover、onmouseout

callback:事件的处理程序,通常是一个匿名函数

capture:使用的浏览器模型,冒泡模型与捕获模型,默认IE8以下的浏览器只支持冒泡模型!

2)基本语法:基于W3C内核的事件监听

dom对象.addEventListener(type,callback) :为W3C内核浏览器绑定事件监听

参数说明:

type:绑定事件类型,不带’on’前缀,如click,mouseover,mouseout

callback:事件的处理程序,通常是一个匿名函数;

3、总结事件监听的区别

IE内核的监听方式与W3C内核的监听方式:

①方式不同

IE内核的浏览器使用attachEvent进行绑定

W3C内核的浏览器使用addEventListener进行绑定

②参数不同

IE内核浏览器,其绑定方式一共有三个参数type,callback,capture(使用的浏览器模型)

W3C内核浏览器,其绑定方式一共有二个参数,type和callback

③type参数不同

IE内核的浏览器,type是需要添加’on’前缀的,如onclick

W3C内核浏览器,type是不需要添加’on’前缀的,如click

④触发顺序不同

IE内核的浏览器,其事件监听是先绑定后触发,后绑定的先触发

W3C内核的浏览器,其事件监听是先绑定先触发,后绑定的后触发

二.动态添加监听和dom生成之后静态添加监听的区别;

jquery中绑定事件一般使用bind(),或者click(),但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。在1.7版本以前使用live。但是在1.8版本以后推荐使用on。

1.选择器匹配到的元素比较多时,不要用bind()迭代绑定。

2.用id选择器时,可以用bind()

3.需要给动态添加的元素绑定时,用delegate()或者on();

/*在jQuery1.7中 .delegate()已被.on()取代。对于早期版本,它仍然使用事件委托的最有效手段。 
在事件绑定和委派,delegate()和on在一般情况下,这两种方法是等效的。*/

4.用delegate()和on()方法,dom树不要太深

5.尽量使用on()

jquery 1.7版以前使用live动态绑定事件

1
2
$("#testdiv ul li").live("click",function(){
});

jquery 1.7版以后使用on动态绑定事件

1
2
3
$("#testdiv ul").on("click","li", function() {
     $(this)//这里的this指的是单个“li”元素。我试过把他换成了
 });





返回列表 返回列表
评论

    分享到