2011-07-28 85 views
0

jquery的.data()方法似乎只在刷新時才起作用,而不是當我通過在URL位置欄中按ENTER重新加載頁面時。Firefox 5 - jQuery.data() - 只適用於刷新

然而,DIV是存在的,我登錄它的console.log - ,無論是在刷新或者簡單的輸入加載從緩存中的網頁..

有沒有人見過這種行爲?什麼可能是錯的?

$('div.special').each(function(index) { 
    console.log($(this)); 
    //shows clearly that data-settings is set.. 
    if ($(this).data('settings')) { 
     console.log('got settings'); 
    } 
}); 


<div class="special" data-settings='{"dataUrl": "xxx", "layout": "list" }'></div> 

編輯:我可以通過執行「解決」這下面:

if ($(this).data('settings')) { 
    var settings = $(this).data('settings'); 
} else if ($(this).attr('data-settings')) { 
    eval('var settings = ' + $(this).attr('data-settings') + ';'); 
} 

所以,很顯然沒有什麼錯的股利或數據的方式,設置構造,因爲我可以訪問json對象通過eval完美無缺。

+1

您是否能夠共享源代碼? – ManseUK

+0

抱歉,這是當前的一個本地開發項目。不能只分享一個頁面。 – Wesley

+0

爲什麼你不能只發布'div'和'.data()'方法 – ManseUK

回答

0

林不知道有多少幫助,我可以沒有看到你的soruce!但這裏有一個非常簡單的例子,說明.data()方法的工作原理(取自jquery.com上的示例) - >http://jsfiddle.net/yR3KG/

+0

我試過我自己的代碼jsfiddle以及它在FF5,但jsfiddle可能解釋不同於一個正常的頁面,對不對? eval()等? – Wesley

+0

當你說它不工作 - 你是什麼意思?我在Chrome和FF的控制檯日誌中獲得「設置」... – ManseUK

+0

當我通過在地址欄中按ENTER再次加載頁面時,我沒有收到消息「有設置」。點擊刷新按鈕進行刷新時,我確實會得到它。 – Wesley