所以我使用这个函数()
months = months.filter(function(e, p) { return months.indexOf(e) == p; });
并且测试alert();
仅在它之前工作。如果我把警报()放在这个功能下面的某个地方它不再起作用了......
这只发生在IE浏览器中,在Chrome中它很好。这打破了它下面的每一个jquery。您可以实时查看问题Here
此外,js文件的直接链接是Here
此功能用于过滤此页面上li上所有months
属性的重复data-mes
获取...我不知道为什么会发生这种情况,我也在使用这个:< / p>
<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));
});
答案 0 :(得分:1)
使用jquery inArray
months = months.filter(function(e, p) { return $.inArray(e, months) == p });
IE9下不支持
你也遇到了array.filter的问题,因为过滤器在下面的IE9中不起作用,而是使用$.grep
months = $.grep(months,function(e, p) { return $.inArray(e, months) == p });
<强> Demo 强>
答案 1 :(得分:0)
indexOf
与IE不兼容。编写自己的,或者因为您已经在网页中使用了jQuery。使用jQuery方法:
http://api.jquery.com/jQuery.inArray/
答案 2 :(得分:0)
indexOf在许多版本中都不可用。请查看jQuery的inArray:http://api.jquery.com/jQuery.inArray/