1.区别

以前一直认为jquery中的$(“#id”)和document.getElementByIdx_x(“id”)得到的效果是一样的,今天做特效的时候才发现并不是这么一回事,通过测试得到:
1、alert($(“#div”))得到的是[object Object]
2、alert(document.getElementById(“div”))得到的是[object HTMLDivElement]
3、alert($(“#div”)[0])或者alert($(“#div”).get(0))得到的是[object HTMLDivElement]
如果仅从定位到元素的角度来看的话,两都是一样的.
区别:
document.getElementById()返回的是DOM对象,而$()返回的是jQuery对象。
$(‘#test’):是一个jquery写法,
#test是一个过滤器表示方法,表示查找一个id是test的节点,返回的是一个数组对象,数组的[0]表示dom节点。
document.getElementById(‘test’):表示从document中查找一个id是test的dom节点。

jQuery对象是jQuery独有的,其可以使用jQuery里的方法。
虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法。
例如:html()是jQuery里的方法。innerHTML是DOM对象的属性

  1. $('#test').html() = document.getElementById("id") .innerHTML

DOM对象转jQuery对象
普通的Dom对象一般可以通过$()转换成jQuery对象。
如:$(document.getElementById(“test”))
返回的就是jQuery对象,可以使用jQuery的方法。

jQuery对象转DOM对象
jQuery对象是一个数组对象,可以通过[index]的方法,来得到相应的DOM对象。
另外、jQuery本身提供,通过.get(index)方法,得到相应的DOM对象
如: $(“#test”)[0],$(“div”).eq(1)[0],$(“td”)[5] 、$(“#test”).get(0)
这些都是Dom对象,可以使用Dom中的方法,但不能再使用jQuery的方法。

以下几种写法都是正确的:

  1. $("#test").html();
  2. $("#test")[0].innerHTML;
  3. $("#test").eq(0)[0].innerHTML;
  4. $("#test").get(0).innerHTML;