日期:2014-05-16  浏览次数:20484 次

juqery基础问题
$("p").append( $("input").map(function(){
  return $(this).val();
}).get().join(", ") );

这个get()代表什么代表get(0)第一个数组吗

------解决方案--------------------
http://www.ostools.net/apidocs/apidoc?api=jquery
------解决方案--------------------
我对你说,map不是转换为数组,是转化为likeArray.
------解决方案--------------------
 $("input") 获得所有input标签元素,map(funciton(){…………}),将前面input的jquery对象转换为存储他们的value值的jquery对象(注意不同于普通数组,虽然特性很像),get()将前面存储input值的jquery 对象 装换为普通数组,join即将数组转换为字符串
------解决方案--------------------
引用:
Quote: 引用:

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

那个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'