【问题标题】:Problem with $.each() in jQueryjQuery 中 $.each() 的问题
【发布时间】:2011-11-26 17:26:00
【问题描述】:

我想通过jQuery.each和数据hotel_id从数组中追加一些,每个hotel_id的编号是4,这个循环$.each(data[0].hotel_id,... });在self内部运行4次内容,以防数据库行中有或插入residence_uresidence_p 3 次(每个有 3 个,而不是 4 个(如 hotel_id)),当运行以下代码时,此代码没有错误只是无法工作。如果我删除代码 $.each(info_ru.units,... });$.each(info_rp.start_date,... }); 它有效:如何修复它?

查看我的完整 js 代码:[http://pastebin.com/jBWEDZrN][1]

这是我在 ajax 调用 (url: 'get_gr',) 中的 js 代码的摘要:

$.each(data[0].hotel_id, function (index, value) {
    var $li = $('<li><input name="hotel_id[]" value="' + value.hotel_id + '" style="display:none;"></li>');
    var $tooltip = $('<div class="tooltip"></div>').appendTo($li);
    $li.appendTo('#residence_name');

    var info_ru = data[0].residence_u[index];
    $.each(info_ru.units, function (index, value) {
        $tooltip.append(value + ' & ' + info_ru.extra[index] + ' & ' + info_ru.price[index] + '<br>');
    });

    var info_rp = data[0].residence_p[index];
    $.each(info_rp.start_date, function (index, value) {
        $tooltip.append(value + ' & ' + info_rp.end_date[index] + ' & ' + info_rp.price_change[index] + '<br>');
    });
    tool_tip()
});

这是输出php代码(url: 'get_gr',):

[{
    "guide": null,
    "hotel_id": [{
        "hotel_id": ["1"]
    }, {
        "hotel_id": ["2"]
    }, {
        "hotel_id": ["3"]
    }, {
        "hotel_id": ["4"]
    }],
    "residence_u": [{
        "units": ["hello", "how", "what"],
        "extra": ["11", "22", "33"],
        "price": ["1,111,111", "2,222,222", "3,333,333"]
    }, {
        "units": ["fine"],
        "extra": ["44"],
        "price": ["4,444,444"]
    }, {
        "units": ["thanks", "good"],
        "extra": ["55", "66"],
        "price": ["5,555,555", "6,666,666"]
    }],
    "residence_p": [{
        "start_date": ["1111", "2222"],
        "end_date": ["1111", "2222"],
        "price_change": ["1111", "2222"]
    }, {
        "start_date": ["3333", "4444"],
        "end_date": ["3333", "4444"],
        "price_change": ["3333", "4444"]
    }, {
        "start_date": ["5555", "6666"],
        "end_date": ["5555", "6666"],
        "price_change": ["5555", "6666"]
    }]
}]

更新:

我在数据库表的一行中插入了几个(array)值和json_encode,现在想用jquery将它们作为顺序回显。

输出js代码是这样的:

1
hello & 11 & 1,111,111
how & 22 & 2,222,222
what & 33 &3,333,333,
1111&1111&1111
2222&2222&2222

2
fine&44&4,444,444
3333&3333&3333
4444&4444&@987654326 p>

3
thanks & 55 & 5,555,555
good & 66 & 6,666,666
5555 & 5555 & @987654372 >6666 & 6666 & 6666

4

【问题讨论】:

  • 很难用如此多的测试而不是有意义的数据来判断您要做什么。我试图将你的组件放在一起,看看在运行jsfiddle.net/TStKJ 时它是否更有意义,但据我所知,它似乎运行没有错误。错误可能出在您的 ToolTip() 方法中吗?
  • @AliciaCibrian:从另一个问题继续对话,如果hotel_idresidence_uresidence_p 的数量应该相等,那么我不知道当它们时你应该怎么做'不是。每个hotel_id 对象是否应该有自己的residence_uresidence_p 对象?如果是这样,为什么不将它们组合在一起?为什么不将它们组合在 JSON 结构中?

标签: javascript jquery each json


【解决方案1】:

residence_u 中只有 3 个元素,residence_p 数组中只有 2 个元素,但原始酒店数组中只有 4 个元素。是否可以像检查有效的 info_ru 一样简单

var info_ru = data[0].residence_u[index];
if ( infor_ru != null ) {
    $.each(info_ru.units, function (index, value) {
        $tooltip.append(value + ' & ' + info_ru.extra[index] + ' & ' + info_ru.price[index] + '<br>');
    });
}

在继续之前?

【讨论】:

  • 没错。如何在代码中运行它?请在代码中给我一个例子。
  • 不,这是不对的。 data[0].hotel_id 不包含字典,它包含字典数组。 index 的值将是数组中的数字索引。
猜你喜欢
  • 2011-05-22
  • 2011-01-07
  • 2012-02-06
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 2012-02-13
相关资源
最近更新 更多