0

だから私はこの関数()を使用します

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

テストalert();はその前にのみ機能します。alert() をこの関数の下のどこかに置くと、もう機能しません...
これはIEでのみ発生し、Chromeでは問題ありません。これにより、その下のすべての jquery が中断されます。ここで問題をライブで見ることができます

また、jsファイルへの直リンクはこちら

この関数は、このページ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 未満ではサポートされていません。

次の IE9 ではフィルタが機能しないため、array.filter にも問題があります。代わりに$.grepを使用してください。

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

デモ

于 2013-06-27T19:14:25.660 に答える
0

IE の場合、indexOf は多くのバージョンで使用できません。代わりに jQuery の inArray をチェックしてください: http://api.jquery.com/jQuery.inArray/

于 2013-06-27T19:13:43.217 に答える
0

indexOfIE ではうまく動作しません。独自に作成するか、Web ページに既に jQuery があるため。jQuery メソッドを使用: http://api.jquery.com/jQuery.inArray/

于 2013-06-27T19:11:29.197 に答える