1

我遇到了一个简单的过滤器脚本没有在 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);
    }
   });
 };
4

1 回答 1

2

Array.everyIE8 及以下版本不支持,所以这条线不起作用:

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();
}
于 2013-05-17T18:19:41.240 回答