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



我使用这个代码来收集数据(),但它不工作在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相同的结果?我认为这是如何处理数据()在不同的浏览器?

这是包含数据的锚:

<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());

如何将获取的数据放在数组中而不是字符串中并按字母顺序排序?然后从数组中创建字符串,不是吗?

最新更新