2013-05-16 38 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

关于把所获取的数据数组而不是一个字符串什么并按字母顺序排序?然后建立你的字符串阵列,不是吗?

相关问题