jQuery each data()返回不同的结果Firefox与Chrome,如何修复?
我使用这段代码来收集数据(),但它在chrome中不起作用,因为它的顺序相反,我如何才能使结果匹配 这是相同的代码。我只是在chrome/firefox上得到了不同的结果,这使得它无法在chrome中运行jQuery each data()返回不同的结果Firefox与Chrome,如何修复?,jquery,Jquery,我使用这段代码来收集数据(),但它在chrome中不起作用,因为它的顺序相反,我如何才能使结果匹配 这是相同的代码。我只是在chrome/firefox上得到了不同的结果,这使得它无法在chrome中运行 /* get checked filters */ strJson = '{'; jQuery('.uag-filter-option').each( function() { if (jQuery(this).hasClass('checked')) { jQuery
/* 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()访问数据属性时,Firefox和IE中属性的顺序是相反的。如何在所有浏览器中实现匹配?您真的不应该关心属性的顺序。您还应该使用
JSON.stringify()
而不是手动序列化结果:
strJson = JSON.stringify(jQuery('.uag-filter-option.checked').data());
将获取的数据放在数组中而不是字符串中,然后按字母顺序排序怎么样?然后从数组中构建字符串,不?您不必担心json对象的键顺序,因为您应该根据键来检索值,所以您得到的是相同的数据,只是元素的顺序不同?如果是这样的话,这很重要,只需对结果对象键进行排序。如果不是通过索引号访问对象值,那么顺序又有什么关系呢
obj.method
两种方法都是相同的。如果顺序重要,请使用数组。对象没有保证的排序顺序。为什么要构建自己的JSON?这通常是个坏主意!为什么不直接使用JSON.stringify($('.uag filter option').data()
?没有帮助!我的主要问题是我需要密钥(第一个),它们在所有浏览器中都必须是有序的。如果有人有办法让它们看起来像fiefox中的一样,那就能解决我的问题。