如何在jQuery中使用$ .makeArray()

时间:2010-07-09 18:42:00

标签: javascript jquery dom arrays

任何人都可以解释我怎么做,jquery的api真的缺乏这个。以下代码有什么问题?

   var arr = $(value).filter(function() { return $(this).is("TD"); } ).html();
   alert(arr[1]);

我只想获取td的innerHTML / text并将其放入数组

3 个答案:

答案 0 :(得分:1)

html()函数以及text()width()等类似函数会返回第一个匹配元素的标量值。

如果你想要一个包含每个匹配元素的HTML内容的数组,你应该调用map(),如下所示:

var arr = $(value).children('td').map(function() { return $(this).html(); }).get();
alert(arr[0]);   //Alerts HTML of first <td> element

答案 1 :(得分:1)

.map().get()一起使用是一种方法:

var arr = $(value).map(function() { 
      var $th = $(this); 
      if($th.is("TD")) return $th.html(); 
}).get();

alert(arr);

我不确定value代表什么,但如果您更改选择器以仅匹配td元素,则可以使用return $(this).html();简化return语句。

.map()遍历元素,并将返回值添加到jQuery对象。 .get()只从jQuery对象中检索数组。


value的声音是tr。然后你可以这样做:

var arr = $(value).children('td').map(function() { 
      return  $(this).html(); 
}).get();

alert(arr);

要创建一个数组,每个项目包含该行的td元素的html数组,您可以这样做:

var arr = [];

$('tr').each(function() { 
    arr.push($(this).children('td').map(function() {
        return $(this).html();
    }));
}).get();

console.log(arr);

这使用标准.push(),因为我不认为在.map()内使用.map()会起作用。我认为当你将内部数组传递给jQuery对象时,它只是将它添加到主数组(或其他东西)。

答案 2 :(得分:0)

.html()功能:

  

描述:获取HTML的内容   集合中的第一个元素   匹配的元素。

许多正在检索值的jQuery函数都是如此。所以发生的事情是你的过滤器函数返回一组jQuery元素,但你的.html()函数导致arr只从集合中的第一个元素分配html。