Я пытаюсь получить значения всех флажков, которые в настоящее время отмечены, и сохранить их в массиве. Вот мой код:
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
});
console.log(searchIDs);
});
Однако это дает больше, чем мне нужно. Я получаю не только значения, но и другие вещи, которые мне не нужны.
[«51729b62c9f2673e4c000004», «517299e7c9f26782a7000003», «51729975c9f267f3b5000002», prevObject: jQuery.fn.jQuery.init [3], context: document, jquery constructor:…
Мне нужны только ID (в данном случае первые 3 элемента).
Используя $.each
и помещая значения в массив, я получаю желаемый результат:
$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]
Однако я бы хотел использовать $.map
, так как это экономит мне строку кода и красивее.
Спасибо
источник
$.map
. Спасибо за решение, работает..get()
нужен, когда функция возвращает.val()
из каждого элемента в коллекции jQuery. Это потому, чтоmap
он превращает его обратно в объект jQuery перед его передачейsearchIDs
?ДЕМО: http://jsfiddle.net/PBhHK/
Просто вызовите get (), и у вас будет массив, как написано в спецификациях: http://api.jquery.com/map/
источник
Вам нужно добавить
.toArray()
в конец вашей.map()
функцииДемо: http://jsfiddle.net/sZQtL/
источник
Я немного отредактировал ваш код и считаю, что пришел с решением, которое вы искали. В основном вместо того,
searchIDs
чтобы быть результатом,.map()
я просто помещал значения в массив.Я создал скрипку с запущенным кодом.
источник
Это сработало для меня!
источник
Необходимо, чтобы элементы формы, названные в HTML как массив, были массивом в объекте javascript, как если бы форма была фактически отправлена.
Если есть форма с несколькими флажками, например:
В результате получился объект с:
И здесь есть множество ответов, которые помогли улучшить мой код, но они были либо слишком сложными, либо не совсем того, что я хотел: Преобразование данных формы в объект JavaScript с помощью jQuery
Работает, но может быть улучшено: работает только с одномерными массивами, и результирующие индексы не могут быть последовательными. Свойство length массива возвращает следующий номер индекса как длину массива, а не фактическую длину.
Надеюсь, это помогло. Намасте!
источник
источник
Не используйте "каждый". Он используется для операций и изменений одного и того же элемента. Используйте «map» для извлечения данных из тела элемента и использования их в другом месте.
источник
map
источник