在IE上打破jquery的功能

时间:2013-06-27 19:09:16

标签: jquery internet-explorer compatibility

所以我使用这个函数()

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

});

3 个答案:

答案 0 :(得分:1)

使用jquery inArray

months = months.filter(function(e, p) { return $.inArray(e, months) == p });
IE9下不支持

Array.indexOf

你也遇到了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)

如果是IE,

indexOf在许多版本中都不可用。请查看jQuery的inArray:http://api.jquery.com/jQuery.inArray/