jquery相关注意点

来源:互联网 发布:淘宝上洗照片可靠吗 编辑:程序博客网 时间:2024/06/04 19:50

1、复选框冒泡事件

昨天在给复选框添加事件的时候,我的复选框是包在li中的,如下:


然后我就给这里面的input添加了这样一个事件:


也就是如果复选框选中了,那么就取消选中;如果没选中,那就给他选中

然后试了一下,发现点击li不点击图下的框框的时候是好使的,可以选中与不选中,但是当点击里面的框框的时候,发现怎么都选不中


然后就去网上搜了一些方法,找到了一种:

//取消复选框原来的点击勾选事件

    $('input[type=checkbox]').click(function(event){
        event.stopPropagation();

    });

搞定


原因:当点击复选框那个框框的时候,它会触发复选框原来就有的选中事件,而我给li添加了点击选中事件,复选框又在li里面,所以点击复选框的时候也相当于点击了这个li,也会触发li的点击选中事件,那这两个事件其实都执行了,只是速度很快,点击复选框--选中--触发li点击事件--不选中    ,那点完之后看起来这个复选框没有变化,也就是选不中了,这个也称冒泡事件。


2、ajax发送数据的类型

做小项目的时候,会用到好几次ajax来发送数据,但是发现,不是每次数据都能够成功传到后台,排除其他路径错误等错误,数据的类型也很重要,ajax能够传递的数据类型有三种:

1)、json对象

2)、json数组

3)、string类型的数据


3、js中的数据类型

1).初始类型
        Undefined
        Null      ----------------------------关于null ,它的值是:null,它的typeof的运算结果是:object
        Number
        String
        Boolean
        2).引用类型
        object (class)

4、js中的size()和length的区别

size():方法

length:属性

如果是获得页面中某个元素的个数,即比如说想要获得所有img的个数,两者的结果是一样的,只不过size()调用的也是length方法,速度会慢一点,且只能在jquery中使用,不过jquery1.8之后就不用size()了;

如果是获取某个字符串的长度,只能用length属性;

length属性也可以获得某个数组的长度,即arr.length;

**对象是无序的,所以不能用obj.length来计算对象的长度,对象也没有length属性


   特别注意:当用ajax传输数据的时候,如果dataType : 'json' ,那么传回的数据如果不为空,那么typeof之后是一个json对象,没有length属      性,console.log(data.length) 结果是undefined;如果传回的数据是空的,那么typeof 之后是 [ ],这是浏览器自动解析的,因为后台josn_encode($arr)中的  $arr也是一个空数组,即[ ],json_encode之后也还是[ ],然后浏览器在解析console.log([ ] )的时候,就把它自动解析成数组,那么这时候可以用  data.length,即[ ].length,有length属性,结果为0

5、在js中动态append大量节点的时候,所需的时间是很长的,解决办法:

1)先将文档存储到str中,等组合好了再一起append

2)上一条方法可能在节点很多的时候还是不够快,可以将这些节点存储到数组中,然后通过一个函数将数组转化成字符串再append,速度更快(还没试过,有时间试一下)


6、css的浮动事件


0 0