** 关于 jquery 的一个小问题!

sunchangzhan 2010-03-24 12:12:51
$(document).ready(function() {
// use this to reset a single form
$("#reset").click(function() {
$("#form")[0].reset();
});
});
这里的 [0] 是怎么回事?看解释说是取 id为form 的第 0个表单 但是我把 0换成1 就不正确了
为什么啊?能帮我讲讲吗? 当然了 我做了三个 id 为 form的表单。先谢谢了!
...全文
188 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sunchangzhan 的回复:]
是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢
[/Quote]

肯定不是所有情况下这样了, 你要知道 jQ 对象它实质上就是个列表(也看成是个数组),
里面的元素就是 一个个的 dom 元素.
jquery对象,加上[index], 就是为了取出列表中的第 index 个 dom 元素.


但这里有一个索引越界的问题, 你必须保证列表中至少有一个元素,你才可以正常的在jq对象后加[0] 来取得第一个元素.

sunchangzhan 2010-03-29
  • 打赏
  • 举报
回复
总觉得设计成这样,让人很难理解。
harold_zhang 2010-03-27
  • 打赏
  • 举报
回复
一楼正解
shan1119 2010-03-24
  • 打赏
  • 举报
回复
<input id=aa>
<input id=aa>
<input id=aa>
<script>
var obj=$("input");
alert(obj[0].getAttribute("id"));//aa
alert(obj[1].getAttribute("id"));//aa
alert(obj[2].getAttribute("id"));//aa
alert($("#aa").length);//1,only one
</script>
阿非 2010-03-24
  • 打赏
  • 举报
回复
$("#form") 是jQuery 对象

$("#form")[0] 是 dom 对象
shan1119 2010-03-24
  • 打赏
  • 举报
回复
$("#form")[0]==$("#form:first")
fengjia123123123 2010-03-24
  • 打赏
  • 举报
回复
你说的【0】是代表第一个表单。但是dom中id是不能重复的,代表唯一的标示。你这样写会造成混乱。
把id=“form”的表单改成name=“form”,然后$("#form") 改成 $("form[name='form']")试一试。
阿非 2010-03-24
  • 打赏
  • 举报
回复
对,除了 [0] 也可以 .get(0)
sunchangzhan 2010-03-24
  • 打赏
  • 举报
回复
TO : Sandy945

那是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢?
--------------------------------------------------------------------

$("#form")[0] 与 $("#form").get(0) 等价

我想问你 是不是所有的情况下??? ---想把jq对象转换成dom元素只要加上[0]就对了呢?
草根醉秋意 2010-03-24
  • 打赏
  • 举报
回复


// HANDLE: $("#id")
} else {
elem = document.getElementById( match[2] );

if ( elem ) {
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem.id !== match[2] ) {
return rootjQuery.find( selector );
}

// Otherwise, we inject the element directly into the jQuery object
this.length = 1;
this[0] = elem;
}

this.context = document;
this.selector = selector;
return this;
}

草根醉秋意 2010-03-24
  • 打赏
  • 举报
回复
原则上是没有相同id的元素的,如果有3个id相同的form,可以尝试下这样选取
$("form[id='form']")
passself 2010-03-24
  • 打赏
  • 举报
回复
楼主不能把id设置成一样的,整个页面中id只能是唯一的,就好像人的身份证一样,你取到的第一个值,是因为浏览器是按顺序来解析的,只能解析第一个,如果碰到第二个或者第三个就不能了
阿非 2010-03-24
  • 打赏
  • 举报
回复
那是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢?
--------------------------------------------------------------------

$("#form")[0] 与 $("#form").get(0) 等价
wcwtitxu 2010-03-24
  • 打赏
  • 举报
回复

<input class="myInput" value="1" />
<input class="myInput" value="2" />
<input class="myInput" value="3" />
<input class="myInput" value="4" />
<input class="myInput" value="5" />
<script>
var list = $(".myInput"); // 选择到多个元素时

alert( list[0].value );
alert( list[1].value );
alert( list[2].value );
alert( list[3].value );
alert( list[4].value );

</script>
sunchangzhan 2010-03-24
  • 打赏
  • 举报
回复
TO : Sandy945

真是感谢你了,总结一下,你的意思是 将jQ 对象转换成 dom 元素(对象) 这样写$("#form")[0]

那是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢?
阿非 2010-03-24
  • 打赏
  • 举报
回复
$('#txt')[0] 等于 document.getElementById('txt')
--------------------------------------------------


那么在什么情况下写成$("#form")[1]是正确的

这是不能的 ,虽然你可以 给两个 <form> 同时定义一样的ID <form id='form1'>

但 $("#form1") 只会返回 第一个符合条件的DOM 元素 并包装成 jQ对象

所以是不会有 $("#form")[1] 这样的写法的, $("#form")[0] 的意思是 将jQ 对象转换成 dom 元素(对象)

------------------------

想用下标 [1] 如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" >
$(function(){
alert('jquery:'+$('#txt').val());
alert('dom:'+$('#txt')[0].value);
// $('#txt')[0] = document.getElementById('txt')

alert($('form')[0].id);
alert($('form')[1].id);
})
</script>
</HEAD>

<BODY>
<input type='text' id='txt' value='Sandy' />
<form id='form1'>
</form>
<form id='form2'>
</form>
</BODY>
</HTML>

sunchangzhan 2010-03-24
  • 打赏
  • 举报
回复
$("#form")[0] 是 dom 对象

这句话我理解了,但是为什么非要用 数组「0」呢?是什么原因 ?取dom的第一个元素吗?如果要是取dom元素的第一个元素是正确的,那么在什么情况下写成$("#form")[1]是正确的,我测试了几种方式都没有成功,请高手指点!先谢谢了。
Jing3_zhang 2010-03-24
  • 打赏
  • 举报
回复
一楼的说的挺对的。这里的0可以理解为占位符。但是是必须要的占位符。呵呵!根据情况写的,就像好名字对号儿入座一样。呵呵!
阿非 2010-03-24
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" >
$(function(){
alert('jquery:'+$('#txt').val());
alert('dom:'+$('#txt')[0].value);
// $('#txt')[0] = document.getElementById('txt')
})
</script>
</HEAD>

<BODY>
<input type='text' id='txt' value='Sandy' />
</BODY>
</HTML>

阿非 2010-03-24
  • 打赏
  • 举报
回复
$("#form")[0] 是 dom 对象

换个说法就是

$("#form")[0] 是 dom 元素
加载更多回复(9)

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧