2012-10-18 25 views
0

拿起我有DIV這樣的:數據選項變化不是由jQuery的

<div id="something-1" data-options='{"pause":"YES","delete":"NO", "kill":"NO"}'></div> 

我竟能在一些Ajax請求,並改變這樣的數據選項:

$('#something-1' + item.id).attr("data-options", '{"pause":"YES","delete":"YES", "kill":"NO"}'); 

當我用螢火蟲檢查時,我可以在html中看到更改的數據選項。

然後,我有這樣的「測試」功能,這是我從螢火蟲觸發,看數據是否阿賈克斯更新後改變:

(function() { 
     window.checkChanges = checkChanges; 
     function checkChanges(id) { 
     var dataOptions = $("#" + id).data('options'); 

     for(var index in dataOptions) { 
      console.log(index,dataOptions[index]); 
     }; 
     } 
    })(); 

但由於某些原因,數據的選項同前和Ajax請求之後。我需要以某種方式將實時功能加入到此功能中?或別的什麼,但我不知道是什麼?有什麼建議麼?

編輯

Ajax請求更改刪除對YES

+0

你爲什麼不嘗試從你的js本身的功能,而不是從firbug控制檯嘗試。 – manny

回答

0

刪除引號包裹您要設置爲options的對象,這樣你逝去的對象不是一個字符串data

$(selector).attr("data-options", {"pause":"YES","delete":"YES", "kill":"NO"}); 

DEMO:http://jsfiddle.net/8A3LE/

另一種方式來改變一個價值僅

$(selector).data('options').delete='YES' 
1

難道你混了所選擇的div的ID?在你的假阿賈克斯請求中,在你檢查時不存在的「東西」後面添加一個item.id。然後它工作得很好。

http://jsfiddle.net/EVyVT/

charlietfl注意的是,你可以ommit對象周圍引號,但我認爲它的工作原理與報價,太。