替换jquery对象中的键的值

时间:2012-07-12 13:21:19

标签: javascript jquery

我创建了一个模态插件,它具有默认或用户定义的选项。 这些值中的大部分将传递给函数并更新,当发生这种情况时,我希望在选项中更新值。理想情况下,我不想更新每个人,并希望整体处理和更新对象(选项)。

以下是用户选项:

modalDialog({
    ID: 'before_unload',
    title: 'opt.heading',
    message: 'opt.text',
    confirm: 'opt.confirm',
    cancel: 'opt.cancel',
    link: $(this).attr('href'),
});

每个以“选择”开头的选项。将对它们执行功能。 以下是处理选项

的modalDialog插件的代码
var options = $.extend(defaults, options);
        return this.each(function() {
            var o = options;
            var reg = '^opt.*'; //regex to find all 'opt.' values
            console.log(o);
            $.each(o, function(i, v) { //for each value
                if(i != 'save'){    
                    if(v.match(reg)){ // match to regex
                        console.log(i+': '+v);
                        var newval = rc.getResource(v); // function to update value
                        console.log(newval); //value has been updated, function works
                        v = i.replace(i, newval); // update the index with new value
                        console.log('New i:v = '+i+': '+v); // checked and it works

//Now the question is, how do I update o (options with the new values?)

                    }
                };
            });

在上面的代码中,假设rc.getResource(v)返回不同的农场动物名称,具体取决于传递给它的值,我使用新的农场动物名称更新值,并检查所有匹配,一切正常,直到我更新选项。我已经尝试了o = options.replace(i,v)并且它返回了options.replace不是一个函数。

我想到的一个想法是在我创建了一个新值(执行我的函数)后取消设置/删除相应的i:v并将新值添加到对象中,例如

i1 = i;
v1 = i.replace(i, newval);
o -=  i:v;
o += i1:iv;
唉,我的大脑疲惫不堪,迫切需要帮助,非常感谢!

1 个答案:

答案 0 :(得分:4)

你不能这样做吗?:

o[i] = v;