0

我有以下 2 段代码在 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,它在所有浏览器中都被忽略了!

4

1 回答 1

1

Hover问题-

hover()接受 2 个参数,一个 formouseenter和一个 for mouseleave。如果您只提供一个函数作为参数,它将为这两个事件运行。

您不需要each在元素集合上运行方法,jQuery 将在内部循环遍历集合的所有元素。

试试这个hover()

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

});

使用两个参数的替代方法:

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

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

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

于 2013-01-15T11:40:04.707 回答