$(document).ready(function() {
// use this to reset a single form
$("#reset").click(function() {
$("#form")[0].reset();
});
});
这里的 [0] 是怎么回事?看解释说是取 id为form 的第 0个表单 但是我把 0换成1 就不正确了
为什么啊?能帮我讲讲吗? 当然了 我做了三个 id 为 form的表单。先谢谢了!

解决方案 »

  1.   

    你说的【0】是代表第一个表单。但是dom中id是不能重复的,代表唯一的标示。你这样写会造成混乱。
    把id=“form”的表单改成name=“form”,然后$("#form") 改成 $("form[name='form']")试一试。
      

  2.   

    $("#form") 是jQuery 对象$("#form")[0] 是 dom 对象
      

  3.   

    <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>
      

  4.   

    $("#form") 其中的form 是ID 名  在一个form页里ID 是唯一的   其实一楼就说的很清楚了。。
      

  5.   

    因为 $(...) 返回的就是数组---------------------------------------------------比如:
    var obj = { doSth: function() {} };  // obj 是一个对象var ary = [ obj ]; // ary 是数组.//即使ary中只有一个元素
    //想取得通过 ary 取得那个 obj 元素,你仍然必须用
    ary[0].doSth();// 你当然不能用 ary.doSth();
      

  6.   

    $("#form")[0].reset();
    相当yu用tagName:
    $("form")[0].reset();
      

  7.   

    这个问题是我在学jquery的时候,看到一个sample中的写法,不明白!现在还没有弄明白,我贴出来大家看一下。http://www.k99k.com/jQuery_getting_started.html
      

  8.   

    另一个经常碰到的任务是在没有被jQuery覆盖的DOM元素上call一些方法,想像一个在你用AJAX方式成功提交后的reset:
    -----------------------------------------------------------------------------------------------
      

  9.   

    在没有被jQuery覆盖的DOM元素上call一些方法那句话 是你看的链接中的原文和下面这个一起看
      

  10.   

    $("#form")[0] 是 dom 对象换个说法就是$("#form")[0] 是 dom 元素
      

  11.   


    <!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>
      

  12.   

    $("#form")[0] 是 dom 对象这句话我理解了,但是为什么非要用 数组「0」呢?是什么原因 ?取dom的第一个元素吗?如果要是取dom元素的第一个元素是正确的,那么在什么情况下写成$("#form")[1]是正确的,我测试了几种方式都没有成功,请高手指点!先谢谢了。
      

  13.   

    $('#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>
      

  14.   

    TO : Sandy945 真是感谢你了,总结一下,你的意思是 将jQ 对象转换成 dom 元素(对象) 这样写$("#form")[0] 那是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢?
      

  15.   


    <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>
      

  16.   

    那是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢?
    --------------------------------------------------------------------$("#form")[0] 与 $("#form").get(0) 等价 
      

  17.   

    楼主不能把id设置成一样的,整个页面中id只能是唯一的,就好像人的身份证一样,你取到的第一个值,是因为浏览器是按顺序来解析的,只能解析第一个,如果碰到第二个或者第三个就不能了
      

  18.   

    原则上是没有相同id的元素的,如果有3个id相同的form,可以尝试下这样选取
    $("form[id='form']")
      

  19.   



    // 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;
    }
      

  20.   

    TO : Sandy945那是不是所有的情况下,想把jq对象转换成dom元素只要加上[0]就对了呢?
    --------------------------------------------------------------------$("#form")[0] 与 $("#form").get(0) 等价 我想问你  是不是所有的情况下??? ---想把jq对象转换成dom元素只要加上[0]就对了呢?
      

  21.   

    对,除了 [0] 也可以 .get(0)
      

  22.   


    肯定不是所有情况下这样了,  你要知道 jQ 对象它实质上就是个列表(也看成是个数组),
    里面的元素就是 一个个的 dom 元素.
    jquery对象,加上[index], 就是为了取出列表中的第 index 个 dom 元素.
    但这里有一个索引越界的问题, 你必须保证列表中至少有一个元素,你才可以正常的在jq对象后加[0] 来取得第一个元素.