Как использовать $ .makeArray () с JQuery - PullRequest
3 голосов
/ 09 июля 2010

Может кто-нибудь объяснить мне, как это сделать, API jquery действительно не хватает на это. Что не так в следующем коде?

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

Я просто хочу взять innerHTML / текст тд и поместить его в массив

Ответы [ 3 ]

1 голос
/ 09 июля 2010

Использование .map() с .get() - это один из способов:

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

alert(arr);

Я не уверен, что представляет value, но если вы измените селектор так, чтобы он соответствовал только td элементам, вы могли бы упростить оператор return с return $(this).html();.

.map() перебирает элементы и добавляет возвращаемое значение к объекту jQuery. .get() извлекает только массив из объекта jQuery.


Похоже, value это tr. Тогда вы могли бы сделать это:

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

alert(arr);

Чтобы создать массив с каждым элементом, содержащим массив HTML-элемента td этой строки, вы можете сделать это:

var arr = [];

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

console.log(arr);

Используется стандарт .push(), так как я не думаю, что использование .map() внутри .map() будет работать. Я думаю, что когда вы передаете внутренний массив в объект jQuery, он просто добавляет его в основной массив (или что-то).

1 голос
/ 09 июля 2010

Функция 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
0 голосов
/ 09 июля 2010

Функция .html():

Описание: Получить содержимое HTML первый элемент в наборе согласованные элементы.

Это верно для многих функций jQuery, которые получают значения. Итак, происходит то, что ваша функция фильтра возвращает набор элементов jQuery, но ваша функция .html () заставляет arr просто присвоить html от первого элемента в наборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...