1

我使用此代码来收集 data() 但它在 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 中是相反的。如何解决这个问题以使其在所有浏览器中匹配?

4

2 回答 2

2

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

strJson = JSON.stringify(jQuery('.uag-filter-option.checked').data());
于 2013-05-16T15:52:44.657 回答
0

将获取的数据放在数组而不是字符串中并按字母顺序对它进行排序怎么样?然后从数组中构建你的字符串,不是吗?

于 2013-05-16T15:52:48.607 回答