jQuery每个data()返回不同的结果Firefox vs Chrome,如何修复?

时间:2013-05-16 15:44:50

标签: jquery

我使用此代码来收集数据(),但它不能用于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中相反。如何在所有浏览器中使其匹配?

2 个答案:

答案 0 :(得分:2)

您真的不应该关心属性的顺序。您还应该使用JSON.stringify()而不是手动序列化结果:

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

答案 1 :(得分:0)

如何将获取的数据放入数组而不是字符串中,然后按字母顺序对其进行排序?然后从数组中构建你的字符串,不是吗?