1

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

以下是用户选项:

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;

唉,我的大脑已经疲惫不堪,迫切需要帮助,我将不胜感激!

4

1 回答 1

4

你不能这样做吗?:

o[i] = v;
于 2012-07-12T13:56:21.980 回答