技术成就梦想

知道用户需求,做到专注!c#,donet,Frameworks,UML,面向对象,设计模式!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

jQuery对象与dom对象

Posted on 2010-05-07 10:20  我不是高手  阅读(3002)  评论(1编辑  收藏  举报

一直以来对于通过jQuery方式获取的对象使不能直接使用JavaScript的一些方法的,开始的时候不理解,现在此案知道,原来jQuery获得的对象并不和我们平时使用getElementById获得的对象是一样的对象。所以一些新手就很迷惑,为什么${”#Element”}不能直接innerHTML,这就是原因所在,解决方式请看下文。

jQuery对象与dom对象的转换
只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。
普通的dom对象一般可以通过$()转换成jquery对象。

如:

  1. $(document.getElementById("msg"))

则为jquery对象,可以使用jquery的方法。
由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。
如:

  1. $("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]

这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。
以下几种写法都是正确的:

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

jQuery查找对象是按照标准的dom层级关系来查找的

如table中无论你是否有tbody,在查找子对象的时候都要按照table-->tbody-->tr的层级关系来查找

关于this

<input name="testThis" type="text" onchange="textThis(this)" />

function textThis(obj)
{
 //在引用自己用的this是dom对象
 alert($(obj).val());
}

该this为dom对象

innerHTML和outerHTML

innerHTML设置或获取对象起始和结束标签内的HTML

outerHTML设置或获取对象及其内容的HTML形式