【发布时间】:2011-08-29 14:06:40
【问题描述】:
我在尝试修改的对象时遇到了问题。该对象具有一定数量的key_yyyy-mm-dd 格式的键。当某些输入字段失去焦点时,我会触发一个函数来修改对象。这个函数如下:
function updateHotelBooking()
{
$(".no_hotel").each(function(i) {
var day = $(this).attr('name').match(/\[(.*?)\]/)[1];
hotelBooking["key_" + day] = parseInt($(this).val());
});
}
.no_hotel 是触发函数的文本框,它们还提供了我想放入对象中的值。
现在,假设我将3 放在我的第一个文本框中,console.log 将返回以下对象:
Object
key_2011-08-21: 3
key_2011-08-22: 0
key_2011-08-23: 0
key_2011-08-24: 0
key_2011-08-25: 0
但是,下次我在文本框(或另一个应该触发该函数的文本框)中放入一些内容时,它确实会触发,但返回的对象保持不变。因此,它不会将第一个数字更改为 5,而是再次返回 3。
我不知道为什么。我的代码看起来很简单,day 和 $(this).val() 中的 console.log 返回正确的值。只是我的对象没有更新。
有人知道吗?非常感谢!
编辑:
hotelBooking 在$(document).ready() 之后被初始化:
var hotelBooking = {};
调用updateHotelBooking的方法如下:
$(".roomrequest").blur(function()
{
updateHotelBooking();
});
EDIT2:JSFiddle:http://jsfiddle.net/pBYeD/2/
【问题讨论】:
-
触发updateHotelBooking的函数长什么样子? hotelBooking 变量在哪里/如何初始化?
-
你如何设置hotelBooking?还有你怎么称呼你的对象?
-
你能发布你的完整代码吗?
-
day 和您的 hotel_booking 对象声明在哪里?
-
看看 .delegate() 。这个功能可能会解决你的问题。
标签: javascript jquery object