2013-05-16 54 views
1

我使用此代碼來收集數據(),但它不在鉻工作,因爲它是在相反的順序,我怎樣才能使結果匹配。jQuery每個數據()返回不同的結果Firefox與Chrome,如何解決?

這是相同的代碼。我只是通過chrome/firefox獲得不同的resutls,這使得它不能在Chrome中運行。

/* get checked filters */ 
strJson = '{'; 
jQuery('.uag-filter-option').each(function() { 
    if (jQuery(this).hasClass('checked')) { 
     jQuery.each(jQuery(this).data(), function(i, v) { 
      strJson += i + ":'" + v + "',"; 
     }); 
    } 
}); 
strJson = strJson.slice(0, -1); 
strJson += '}'; 

alert(strJson); 

在Firefox中,我得到:

{sort:\'sortbydate\',method:\'sortby\'} 

在Chrome中,我得到:

{method:\'sortby\',sort:\'sortbydate\'} 

我怎樣才能得到同樣的結果在Chrome作爲在Firefox?我認爲它是如何在不同的瀏覽器中處理data()?

下面是一個包含錨點的數據:

<a href="#" class="uag-filter-option" data-method="sortby" data-sort="sortbydate">date</a> 

有什麼想法嗎?

似乎:

當訪問使用jQuery.data()數據attribues,它們的順序在Firefox和IE被反轉。如何使它在所有瀏覽器中相匹配?

+2

你不應該擔心按鍵順序JSON對象的,因爲你應該根據關鍵 –

+1

所以,你所得到的相同的數據只是元素以不同的順序檢索的價值?如果是這樣,那很重要,只需對結果對象鍵進行排序即可。 –

+0

如果您沒有通過索引號訪問對象值,爲什麼它的順序很重要? 'obj.method'是一樣的。 – sbeliv01

回答

2

你真的不應該關心什麼順序性能是您還應該使用JSON.stringify(),而不是手動序列化結果:

strJson = JSON.stringify(jQuery('.uag-filter-option.checked').data()); 
+0

也無濟於事!我的主要問題是我需要密鑰(第一個),他們必須在所有的瀏覽器中。如果有人有解決方案,使他們都看起來像fiefox中的同一個將解決我的問題。 –

0

關於把所獲取的數據數組而不是一個字符串什麼並按字母順序排序?然後建立你的字符串陣列,不是嗎?

相關問題