1 var s = null;
alert(typeof(s)) // object
2 jquery中 attr 和 prop 的区别
attr设置的属性主要体现在页面上,prop设置的属性主要体现在内存上
对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
< a href="http://www.baidu.com"target="_self"class="btn">百度
这个例子里元素的DOM属性有“href、target和class",这些属性就是元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。
这个例子里元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。
< inputid="chk1"type="checkbox"/>是否可见
< inputid="chk2"type="checkbox"checked="checked"/>是否可见
像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。
$("#chk1").prop("checked") ==false$("#chk2").prop("checked") ==true
如果上面使用attr方法,则会出现:
$("#chk1").attr("checked") ==undefined
$("#chk2").attr("checked") == "checked"
3 null == undefine // true
null === undefine // false
4 标题标签不能继承文字大小
5 闭包问题
var elem =document.getElementsByTagName('div');// 如果页面上有5个div
for( var i =0; i < elem.length; i++) {
elem[i].onclick =function () {
alert(i);// 总是5
};
}
上方是一个很常见闭包问题,点击任何div弹出的值总是5,因为当你触发点击事件的时候i的值早已是5,可以用下面方式解决:
var elem =document.getElementsByTagName('div');// 如果页面上有5个div
for(var i =0; i < elem.length; i++) {
(function (w) { elem[w].onclick =function () {
alert(w);// 依次为0,1,2,3,4
};
})(i);
}
在绑定点击事件外部封装一个立即执行函数,并将i传入该函数即可。
6
标签的defer="defer"属性 defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。标签的defer="defer"属性 defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。标签的defer="defer"属性 defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。
网友评论