我创建了一个模态插件,它具有默认或用户定义的选项。 这些值中的大部分将传递给函数并更新,当发生这种情况时,我希望在选项中更新值。理想情况下,我不想更新每个人,并希望整体处理和更新对象(选项)。
以下是用户选项:
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;
唉,我的大脑疲惫不堪,迫切需要帮助,非常感谢!
答案 0 :(得分:4)
你不能这样做吗?:
o[i] = v;