$("p").append( $("input").map(function(){
  return $(this).val();
}).get().join(", ") );这个get()代表什么代表get(0)第一个数组吗

解决方案 »

  1.   

    http://www.ostools.net/apidocs/apidoc?api=jquery
      

  2.   

    把前面的jquery对象转化为普通数组~
      

  3.   

    那个map是转换数组 我问的事get()
      

  4.   

    我对你说,map不是转换为数组,是转化为likeArray.
      

  5.   

     $("input") 获得所有input标签元素,map(funciton(){…………}),将前面input的jquery对象转换为存储他们的value值的jquery对象(注意不同于普通数组,虽然特性很像),get()将前面存储input值的jquery 对象 装换为普通数组,join即将数组转换为字符串
      

  6.   

    那个map是转换数组 我问的事get()map后的结果的确是数组,但是这个数组同时也是jquery对象(jquery对象不一定非得是dom元素集合),这样才能保证map方法调用后还能继续链式调用其他方法。而get则负责将这个特殊的数组转化为js中常规的数组,所以get调用之后再链式调用其他方法就会报错。你可以在控制台测试一下:var a= $("input").map(function(){return $(this).val()});
    var b= $("input").map(function(){return $(this).val()}).get();console.log(a);//jquery对象数组,拥有document上下文和jquery方法
    console.log(b)//普通数组
    a.each(function(k,v){alert(v)});//正常弹出
    b.each(function(k,v){alert(v))//报错:Object [object Array] has no method 'each'
      

  7.   

    严格意义上来说,map后的结果并不是真正的数组(如果是真正的数组就没必要...get().join()了,直接...join()就可以了,反正都是为了连接成字符串)。当然也可以用其他方法来验证一下,比如说调用原生数组的方法,刚才在控制台测试的时候用了数组的push()方法来验证,结果调用正常未报错,但是多试了几个方法之后发现map返回的这个东西只能调用部分原生数组方法(如push,splice ...),还有部分方法都不能正常调用(如pop,reverse...),所以上面提到的“map后的结果的确是数组”是不对的,应该说它是jquery对象,同时也是“类数组”对象。PS: 同时,在map返回的对象的原型方法中也就是jquery方法中,发现了push方法和splice方法,所以之所以前面push,splice调用成功是因为是对象方法而非数组方法,更加说明了map返回的是jquery对象且是个类数组对象!