1.js/jquery 写的一些语句不一定非要写在function或者页面载入函数里,可以就直接写在<script>里,这样他就会只执行一次
2.get()是得到dom对象,equal()是得到jquery对象
3.选择器后[0]是DOM对象,例如$("form")[0]是dom对象,得再加一层$()才能变成jquery对象
4.attr()的是对应的dom的属性,比如表单的action之类得$($("form")[0]).attr("action"); jquery对象的属性(可通过.属性操作)只有jquery、length等少数几个(见jquery对象的属性)
可以通过控制台的"local"中的form的attributes,发现一个表单至少有以下几个属性name,action,length可以通过attr()得到
attr() 与 val() 的区别:val()一般是表单元素的value属性的值,而attr则是操作属性的值,所有可以attr("value")
5.我之前有个误区:
貌似,只有一个元素内容时,form和form[0]就一样了,form.children()就是表单元素内容
否则,table[0]是第一个table,table.children()是各个table的集合
很多时候jquery得到的是多个元素的集合,比如$("div")是页面上所有div元素的集合,尽管有时页面上只有一个这样的元素;还可以是不同元素的集合,比如$("div,p")
以form为例,form是表单的集合,form[0]是第一个表单,form[1]是第二个表单;但是form.children()不是一个个form表单f,而是所有表单的子元素的集合,比如说每个表格表单的input...的集合
不管几个元素,ie的locals都是[0]....的样式 所以建议按照人的逻辑来思考,你得到的是一个几个元素的集合( 如$("form") ),就后面加[num]再转jq对象来获得这个对象,如果你已经得到的是一个元素(比如,$("form")是一系元素的集合,到了$($("form)[0])这样是一个元素),那么尽管它的jquery对象构成里仍然是[0],那也就把他当成一个元素,然后再要获得form0下的子元素,就用children()之类方法获取。(因为form0的jq对象下是[0]对吧,如果你$(form0[0])那得到的仍然是form0,可以理解,并不是form0下的第一个input,这样会无限循环下去 )
但是有一个很奇怪的事情是,即使$("form")得到了多个表单,但是表单集合form通过attr(),比如form.attr("action")、form.attr("name")、$("input").val(),不仅可以操作而且得到的都是第一个表单的东西,而html元素的text()方法则不会,比如p.text()返回的是所有p的文本内容在一起而不是第一个p的文本内容。所以暂时得出结论,jquery集合元素 .attr()、.val() 和他的[0]的jquery对象.attr()、.val()是一样的。