jquery 中的 $(“#”) 与 js中的document.getElementById(“”) 的区别
http://www.blogjava.net/tyjava/articles/372007.html
var filenameArray = jsonObj.Filename.split(','); var selectObj = document.getElementById("Filename"); if(filenameArray.constructor === Array){ for(var i=0; i<filenameArray.length; i++){ var optionElem = document.createElement('option'); optionElem.text = filenameArray[i]; selectObj.add(optionElem,null); try { $('#Filename').add(optionElem,null); // standards compliant } catch(ex) { $('#Filename').add(optionElem); // IE only } } }
http://www.jquery.org.cn/archives/375
http://blog.allenm.me/2009/07/jquery%E4%B8%ADid%E5%92%8Cdocumentgetelementbyidid%E7%9A%84%E5%8C%BA%E5%88%AB/
使用Jquery的$(“#id”)选择了<select>标签,然后用DOM的add方法插入<option>节点,失败,换用document.getElementByID就可以。一直以为Jquery的$方法返回的是DOM对象,搜索了一下才知道,原来是有差别的,看来是我看书的时候不认真造成的。
用Jquery选择的包装集返回的是Jquery对象,用document.getElementByID返回的却是DOM对象,既然对象不同,方法也就不能混用,所以我开始的时候使用add方法是没用的。这里有一篇文章详细讲解Jquery对象和DOM对象之间的转换。简单说来就是:Query对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。 对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象)。
所以对于我遇到的问题,我只要使用$(“#id”)[0];就可以获得DOM对象了,就可以使用add方法了。
———————————update———————————————
用Jquery的时候,用.each()可以遍历包装集里面的DOM对象