В основном я пытаюсь собрать идентификаторы каждого элемента с определенным классом и поместить те идентификаторы в массив. Я использую jQuery 1.4.1 и попытался использовать .each (), но действительно не понимаю это или как передать массив из функции.
$('a#submitarray').click(function(){
var datearray = new Array();
$('.selected').each(function(){
datearray.push($(this).attr('id'));
});
// AJAX code to send datearray to process.php file
});
Я уверен, что я - путь прочь, поскольку я являюсь довольно новым в этом, таким образом, любая справка совета была бы потрясающей.Спасибо!
Вы можете использовать map()
тоже:
$('a#submitarray').click(function(){
var datearray = $('selected').map(function(_, elem) {
return elem.id;
}).get(); // edited to add ".get()" at the end; thanks @patrick
// ajax
});
Метод map()
передает каждый индекс (который в моем примере не используется) и элемент в заданную функцию и строит для вас массив из возвращаемых значений.
Вам не нужно передавать массив анонимной функции, потому что он находится в той же области.
Попробуйте с помощью map
функции jquery:
datearray = $('.selected').map(function(){
return $(this).attr('id');
}).get();
// use ajax to send datearray
Массив должен быть загружен; вы можете отправить его на сервер с помощью jQuery.post
...
$.post("process.php", datearray, function(dat) {
alert('Response: ' + dat);
});
По-моему, все выглядит хорошо, массив будет заполнен и будет доступен там, где вы разместили комментарий. Верьте в себя.
Основываясь на других ответах, вот упрощенная версия:
var datearray = $('selected').map(function() {
return this.id;
}).get();
Функция map получает id от каждого элемента, а функция get возвращает массив. В анонимной функции, переданной в map
, this
обращается к каждому выбранному элементу по очереди.