IE8和IE7上的jQuery过滤器问题

时间:2013-05-17 18:14:57

标签: jquery internet-explorer-8

我遇到的问题是IE7或IE8中没有触发简单的过滤器脚本。我至少希望它能在IE8上运行。 IE7对我来说很糟糕。该网站现在是一个测试。但我似乎无法让过滤器工作。它当然适用于IE9和Chrome和Firefox,但不适用于IE8。我正在使用jQuery 1.8.1。下面是JS,这里是URL: http://carlosmosqueda.com/tastytacos/menu.html - 过滤器位于菜单项页面的顶部。任何想法都将不胜感激。

 //Menu filter


 $(document).ready(function() {
 $('#menuFilter li').click(function(){
    $(this).siblings().removeClass("activeFilter");
        $(this).toggleClass("activeFilter");
        filter();
     });

     var filter = function() {
     var classes = $("#menuFilter li.activeFilter")
    .map(function() {
       return $(this).data("filter");
     })
    .toArray();

    $(".item").each(function() {
    var $this = $(this);
    var show = classes.every(function(aClass) {
        return $this.hasClass(aClass);
    });

    if(show) {
        $this.fadeIn(200);
    } else {
       $this.fadeOut(200);
    }
   });
 };

1 个答案:

答案 0 :(得分:2)

IE8及以下版本不支持

Array.every,因此该行不起作用:

var show = classes.every(function(aClass) {

使用polyfill(在MDN页面上)或使用for循环。

使用for循环,您可以执行以下操作:

var has_all = true;

for (var i = 0; i < classes.length; i++) {
    if (!$this.hasClass(classes[i])) {
        has_all = false;
        break;
    }
}

if (has_all) {
    $this.fadeIn();
} else {
    $this.fadeOut();
}