使用Jquery每个函数,我正在解析一个名为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
});
}
});
有人可以帮忙吗?
答案 0 :(得分: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);
答案 1 :(得分:0)
您当前的选择器只抓取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();
答案 2 :(得分:0)
试试这个
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);
OR
在jquery中使用map来获取数组中的所有标签值
var labelValue = $('#myordersdiv ul li label').map(function (i, elem) {
return $(this).text();
}).get();
console.log(labelValue);
答案 3 :(得分:0)
试试这个
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);
});