#jquery
#jquery
Вопрос:
Используя Jquery для каждой функции, я анализирую данные div, вызываемые как myordersdiv
При разборе myordersdiv
я создаю массив и сохраняю данные.
Проблема, с которой я сталкиваюсь, заключается в том, что
Если myordersdiv
у него есть один elmenet, то он работает нормально, а o / p равен
[{"name":"Choclate"}]
Но в случае myordersdiv
, если под ним есть два elmenet , тогда o / p равен
[{"name":"ChocolateVanila "}]
(Он смешивает их оба)
Скрипка для первого случая
Скрипка для второго случая
Правильно, селектор jQuery
$.each($('#myordersdiv > ul'), function(i, elem) {
name = $(elem).find("label").text();
if (name != 'undefined') {
//Creating product array
products.push({
'name': name
});
}
});
Кто-нибудь может помочь??
Ответ №1:
попробуйте это:-
var name;
var products = [];
$('#myordersdiv > ul').find('ul').each(function(){
name = $(this).find("label").text();
if (name != 'undefined') {
//Creating product array
products.push({
'name': name
});
}
});
var orderjson = JSON.stringify(products);
console.log(orderjson);
ДЕМОНСТРАЦИЯ
Ответ №2:
Ваш текущий селектор захватывает только непосредственный ul
дочерний элемент #myordersdiv
, и это переносит все элементы вашего списка. Таким образом, в $.each
функции он получит весь текст меток и объединит их. Есть несколько способов исправить селекторы, в том числе следующие:
$.each($('.prd-items-detials > ul'), function(i, elem) {
name = $(elem).find("label").text();
$.each($('#myordersdiv label'), function(i, elem) {
name = $(elem).text();
Ответ №3:
попробуйте это
var name;
var products = [];
$.each($('#myordersdiv > ul'), function(i, elem) {
$(elem).find("label").each(function(i, elem) {
var name=$(this).text();
if (name != 'undefined') {
//Creating product array
products.push({
'name': name
});
}
});
});
var orderjson = JSON.stringify(products);
console.log(orderjson);
ДЕМОНСТРАЦИЯ
или
используйте map в jquery, чтобы получить все значения метки в массиве
var labelValue = $('#myordersdiv ul li label').map(function (i, elem) {
return $(this).text();
}).get();
console.log(labelValue);
Комментарии:
1. Спасибо, но у меня есть несколько элементов для отправки в json, а не только имя, для демонстрации я это показал . name = $(elem).find(«label»).text(); image = $(elem).find(‘img’).attr(‘src’); quantity = parseInt($(elem).find(«i.qt»).text()); цена = $(elem).find(«div.total»).text(); начинки = [];
Ответ №4:
попробуйте это
var name;
var products = [];
$('input[type="checkbox"]').click(function () {
name = $(this).parent('form').find("label").text();
if ($(this).is(':checked')) {
products.push({
'name': name
});
} else {
var index = products.indexOf(name);
products.splice(index, 1);
}
var orderjson = JSON.stringify(products);
console.log(orderjson);
});
скрипка:
http://jsfiddle.net/GStDU/9 /