我使用此代码来收集数据(),但它不能用于chrome,因为它的顺序相反,我怎样才能使结果匹配。
这是相同的代码。我只是在chrome / firefox上获得了不同的结果,这使得它无法在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()访问数据属性时,它们的顺序在Firefox和IE中相反。如何在所有浏览器中使其匹配?
答案 0 :(得分:2)
您真的不应该关心属性的顺序。您还应该使用JSON.stringify()
而不是手动序列化结果:
strJson = JSON.stringify(jQuery('.uag-filter-option.checked').data());
答案 1 :(得分:0)
如何将获取的数据放入数组而不是字符串中,然后按字母顺序对其进行排序?然后从数组中构建你的字符串,不是吗?