1. window.onload与$(document).ready()的对比
执行时机:前者必须等网页中的所有内容都加载完毕后(包括图片)才执行;后者网页中的所有dom结构绘制完毕后就执行,可能dom元素关联的东西还没有加载完。
编写个数:前者不能同时多个,如果多个,最后一个生效;后者可以有多个,多个都生效。
简化写法:前者无,后者$( function(){ } );
2. jQuery对象和DOM对象互转
jQuery对象是一个数组对象
jQuery转dom jquery对象后边加上 [index] 或者 get(index)
var cr = $("#cr").[0]; var cr = $("#cr").get(0);
dom转jQuery $(dom对象)
var $cr = $(document.getElementById("cr"));
$()是jQuery对象的制造工厂
要注意的是两种对象使用的方法是不同的,不能相互使用对方的方法。所以需要转换后才能使用。
3. js和jquery的方法区别,二者方法不能通用:
js:
document.getElementsByTagName();
var obj = document.getElementById("id");
var objHtml = obj.innerHTML;
obj.checked;
jQuery:
$("#id").html();
$("#id").attr("checked"); $("#id").is(":checked");
4.解决jQuery和其他js库(如Prototype)的冲突
如果jQuery库在其他库之后
1. 默认情况jQuery用$作为自身的快捷方式,可以在任何时候调用jQuery.noConflict()函数将变量$的控制权交给其他js库
然后使用jQuery的话,就用jQuery( function(){ })
2. 自定义备用名称
var $a = jQuery.noConflict(); $j(function(){ })
3. 函数内部继续使用$,不会与外部的其他函数库使用$相互冲突
第一种:
jQuery.noConflict();
jQuery( function($){ $("p").click..... })
第二种:
jQuery.noConflict();
( function($){ $("p").click..... })(jQuery);
如果jQuery库在其他库之前,那么直接可以jQuery来使用jQuery,其他库用$();
无需用jQuery.noConflict();来解决冲突。
5. jQuery选择器操作,即使元素不存在也不报错,js则不行
js:
if(document.getElementById("tt")){
....先判断存在才能操作,不然报错
}
jQuery无需检查是否存在,也不会报错。
如果想要判断是否存在,操作是
if($("#tt")[0]){
...转化成dom对象
}
或者
if($("#tt").length>0){
...获取元素长度
}
需要注意的是,$("#tt")获取的永远是对象,即使网页上没有此元素,所以要判断是否存在,需要获取到元素的长度length判断,
或者是转化成dom对象判断
js方法
var arrays = new Array(); 定义数组
arrays.push(items[i].value); 数组中添加元素
if(obj.checked) 是否被选中
getElementById()
getElementsByName(); 根据名字返回一个数组,可以用[0],[1]等获取数组中的一个,通过for循环,
items.length 获取数组长度
getElementsByTagName()