Получение значения нескольких элементов с помощью JQuery
Я пытаюсь получить значение ячейки таблицы.
Например
<table id='projects'>
<tr>
<td id='a'>aaaaa</td>
<td id='b'>bbbbb</td>
<td id='c'>ccccc</td>
<td id='d'>eeeee</td>
<td id='e'>ddddd</td>
</tr>
</table>
<a id='test' href='#'>test </a>
Я хочу получить aaaaa, bbbbb, ccccc, eeeee, ddddd и присвоить их массиву
Я считаю, что могу получить значение с помощью кода JQuery ниже
$(document).ready(function(){
$('#test').click(function(){
var tableVal=new Array();
tableVal['a']=$('#a').text();
tableVal['b']=$('#b').text();
tableVal['c']=$('#c').text();
tableVal['d']=$('#d').text();
tableVal['e']=$('#e').text();
})
});
Однако, я считаю, что он не очень удобен в обслуживании и занимает много кода, если у меня есть 20 тегов. Мне было интересно, смогу ли я сделать это с помощью .each
или любым лучшим способом архивировать это. Спасибо за помощь.
Ответы
Ответ 1
Вы можете сделать что-то вроде ниже,
var tableVal= [];
$('#projects tr:eq(0) td').each (function () {
tableVal[this.id] = $(this).text();
});
Примечание: : eq (0) - означает 1-й ряд.. Измените соответственно, если вы хотите сделать для всех строк или сообщите мне, если вам нужна помощь в этом.
Ответ 2
Если вы действительно хотите Array, используйте .map()
с .toArray()
.
var tableVal = $('#projects td').map(function(i,v) {
return $(this).text();
}).toArray();
В противном случае, если вы действительно собираетесь использовать не числовые индексы, вам нужен объект, используя методы в других ответах.
Ответ 3
Да, вы можете:).
var tableVals= {}
$('#projects td').each(function() {
tableVals[$(this).attr('id')] = $(this).text();
});
Пожалуйста, не забудьте использовать объект вместо массива, если ваши ключи не являются числовыми.
Ответ 4
Сначала укажите tr
a id
:
<tr id="rowToGetDataFrom">
Затем вы можете получить массив, который вы хотите, например:
var tableVal = $('#rowToGetDataFrom td').map(function () { return $(this).text(); });
Демо: http://jsfiddle.net/alecgorge/3ApnB/
Ответ 5
Try:
var tableVal = [];
$('#test').click(
function(){
$('#projects td').each(
function(){
tableVal.push($(this).text());
});
});