javascript / jQuery - для цикла - PullRequest
16 голосов
/ 01 марта 2012

У меня есть ответ ajax на запрос, который я затем использую для установки переменных массива. В любом случае можно использовать For For Loop, чтобы изменить на #name, чтобы мне не нужно было писать строку кода для установки каждого элемента массива.

array[0]=$('#event00',response).html();
array[1]=$('#event01',response).html();
array[2]=$('#event02',response).html();
array[3]=$('#event03',response).html();

Таким образом, «# event00» можно использовать в цикле for для замены на «# event01» и т. Д.

Ответы [ 3 ]

38 голосов
/ 01 марта 2012

Используйте обычный цикл for и отформатируйте индекс, который будет использоваться в селекторе.

var array = [];
for (var i = 0; i < 4; i++) {
    var selector = '' + i;
    if (selector.length == 1)
        selector = '0' + selector;
    selector = '#event' + selector;
    array.push($(selector, response).html());
}
7 голосов
/ 01 марта 2012

А что-то вроде этого?

var arr = [];

$('[id^=event]', response).each(function(){
    arr.push($(this).html());
});

Селектор [attr^=selector] сопоставляет элементы, для которых атрибут attr начинается с заданной строки, таким образом, вам не нужны числа после "событие».

2 голосов
/ 01 марта 2012

.each() должно работать на вас.http://api.jquery.com/jQuery.each/ или http://api.jquery.com/each/, или вы можете использовать .map.

var newArray = $(array).map(function(i) {
    return $('#event' + i, response).html();
});

Редактировать: я удалил добавление добавленного 0, поскольку предлагается не использовать его.1010 *

Если вам нужно, используйте

var newArray = $(array).map(function(i) {
    var number = '' + i;
    if (number.length == 1) {
        number = '0' + number;
    }   
    return $('#event' + number, response).html();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...