0

所以我使用这个函数()

months = months.filter(function(e, p) { return months.indexOf(e) == p; });

并且alert();只有在它之前才能进行测试。如果我把 alert() 放在这个函数下面的某个地方,它就不再起作用了……
这只发生在 IE 中,在 Chrome 中它很好。这会破坏它下面的每个 jquery。你可以在这里看到问题

另外,js文件的直接链接是Here

此功能用于过滤此页面上 li 上months所有属性的重复获取data-mes...我不知道为什么会这样,而且,我正在使用这个:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

但是,显然对这个问题没有影响....

这是这个问题的完整代码:

// gets all `data-mes` into an array
var months = $('#gride li').map(function() { return $(this).data('mes'); }).get();

// remove repeated meses
months = months.filter(function(e, p) { return months.indexOf(e) == p; });

// sorts the months
var order = ['janeiro','fevereiro','março','abril','maio','junho','julho','agosto','setembro','outubro','novembro','dezembro'];
orderedMonths = months.sort(function(a,b){ return order.indexOf(a) - order.indexOf(b); });

// add them, ordered, to the <select> with id #selectMes
$.each(orderedMonths, function(_, v) {
    $('#selectmes').append($('<li class="filter" data-filter="'+ v +'">').val(v).text(v));

});
4

3 回答 3

1

使用 jquery inArray

months = months.filter(function(e, p) { return $.inArray(e, months) == p });

Array.indexOf在 IE9 下不支持。

array.filter 也有问题,因为 filter 在下面的 IE9 中不起作用,请改用$.grep

 months = $.grep(months,function(e, p) { return $.inArray(e, months) == p });

演示

于 2013-06-27T19:14:25.660 回答
0

indexOf不能很好地与 IE 配合使用。编写你自己的,或者因为你的网页中已经有 jQuery。使用jQuery方法: http ://api.jquery.com/jQuery.inArray/

于 2013-06-27T19:11:29.197 回答
0

如果 IE,indexOf 在许多版本中不可用。改为查看 jQuery 的 inArray:http ://api.jquery.com/jQuery.inArray/

于 2013-06-27T19:13:43.217 回答