2012-07-12 75 views
1

我創建了一個默認或用戶定義了選項的模式插件。 大部分這些值將被傳遞給一個函數並進行更新,當發生這種情況時,我希望在選項中更新值。理想情況下,我不希望更新每個人,並且希望處理和更新整個對象(選項)。替換jquery對象中的鍵的值

下面是用戶選擇:

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

每個開頭的選項「選擇」。將具有對他們執行的功能。 這裏是與選項

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?) 

        } 
       }; 
      }); 

在上面的代碼中涉及的modalDialog插件的代碼,讓假裝rc.getResource(五)具有不同的農場動物的名字取決於哪個值被傳遞給了回來它會更新我的新農場動物名稱的價值,並檢查它是否匹配,並且一切正在進行,直到我更新選項。我試過o = options.replace(i,v),它回來了options.replace不是一個函數。

我曾經想過的一個想法是在創建新值(執行我的功能)後,取消設置/刪除相應的i:v並將新值添加到對象,例如,

i1 = i; 
v1 = i.replace(i, newval); 
o -= i:v; 
o += i1:iv; 

唉,我的大腦已經疲憊不堪,急需幫助,非常感謝!

回答

4

你就不能做到這一點?:

o[i] = v; 
+2

我愛你,斯科特,你願意嫁給我嗎? – 2012-07-12 13:58:36

+2

那麼,我的嫁妝是一個可憐的9個字符的代碼......其中兩個是空格!很高興我能幫上忙。 – 2012-07-12 14:05:28