2013-01-15 56 views
0

我有以下2段代碼,它們在IE8及以下版本中不起作用。jQuery代碼不工作在IE8和以下

services.each(function() { 
    $(this).hover(function() { 
     services.removeClass('active'); 
     $(this).addClass('active');      
    }); 
}); 

由於所有4個服務始終都有一個活動類,因此會失敗。同樣在下面的代碼中,回調函數不會添加完成的類。

webform.click(function() {     
    if(!$(this).hasClass('expanded')) { 
      $(this).addClass('expanded'); 
      $(this).animate({ 
       marginLeft: '-25%', 
       width: "50%", 
       minWidth: '400px', 
       maxWidth: '700px', 
       padding: '0', 
       minHeight: "580px", 
       height: 'auto', 
       borderRadius: "0" 
      }, 1000, function() { 
       $(this).addClass('completed'); 
      }); 
     } 
    }); 

誰能告訴我如何解決這些,更重要的是,我應該在將來做,以確保我的代碼是IE兼容。

對於有類似jQuery/IE問題的人來說,我有一個很大的問題,就是在最後一個選項之後放置一個逗號,例如上面的borderRadius: "0"之後,在除IE之外的所有瀏覽器中都會忽略這個問題!

+0

你能告訴你定義'services'和代碼'Web窗體

使用兩個參數試試這個你hover()

services.hover(function() { /* add on mousenter, remove on mouseleave */ $(this).toggleClass('active'); }); 

替代方法',而且這些元素的HTML可能會有所幫助。 –

+0

在控制檯中拋出什麼錯誤?不確定這是有道理的動畫'最大/最小'屬性和IE 7和8不支持'borderRadius'。可以先檢查瀏覽器支持並相應地定義對象。建議使用一個類來設置'max/min'屬性 – charlietfl

+1

對於尾隨逗號的舊IE拋出錯誤並不是什麼新東西 - 請參閱[JavaScript中的尾隨逗號](http://stackoverflow.com/q/7246618/1331430)。現在至於你的實際問題,你提供的代碼是不夠的。嘗試在jsfiddle/jsbin/codepen/dabblet/tinkerbin等現場場景中重現此問題。使用您發佈的看起來有效的代碼來推斷問題是不可能的。 –

回答

1

Hover problem-

hover()需要兩個參數,一個用於mouseenter,一個用於mouseleave。如果你只提供一個函數作爲參數,它將運行這兩個事件。

您不需要each在元素集合上運行方法,jQuery將內部循環集合的所有元素。

services.hover(function() { 
     /* add on mousenter */ 
     $(this).addClass('active');     

}, function(){ 
     /*remove on mouseleave */ 
     $(this).removeClass('active'); 
}); 

API參考:http://api.jquery.com/hover