2009-12-02 22 views
5

Bu yüzden FF, Safari ve Chrome'da harika çalışan çok basit bir jQuery .slideDown kullanıyorum. IE7'de hiç çalışmayacak.jQuery slideDown/slideUp IE7'de çalışmıyor


//Top Mailing List Drop down animation 
$(document).ready(function() { 
$('div#top_mailing_hidden').hide(); 

// Expand Panel 
$("input#top_mailing").focus(function(){ 
$("div#top_mailing_hidden").slideDown("slow"); 
}); 

// Collapse Panel 
$("input#top_mailing").blur(function(){ 
$("div#top_mailing_hidden").slideUp("slow"); 
}); 
}); 

saatlerce araştırma ve Böl torunları kullanılan edilirken IE7'de kadar bozulmasına neden olmaktadır aşağı/slideUp ile ilgili bir hata hakkında bir şey buldum oldum: Burada script : sabit elemanlar. Bu animasyon bir pozisyonda gerçekleşiyor: sabit navbar, ancak, iç elemanların konum ile sarılmasını denedim: göreceli ama boşuna, hala IE'de hiçbir şey elde etmiyorum. Ayrıca, nav öğesinin jQuery ile gizlendiğine dikkat edin, bu işlev IE7'de bile çalışıyor, ancak, yukarı/aşağı değil.

/* --------------Top Dropdown Mailing List------------------- */ 

#top_nav div#top_mailing{ 
    float: right; 
    width: 351px; 
    padding: 0 10px 10px 5px; 
    background: url(images/top_mailing_bg.png) bottom center no-repeat; 
    position: absolute; 
    top: 0; 
    right: 0; 
    color: #fff; 
    text-shadow:0 -1px 0px #222; 
} 
#top_mailing #top_mailing_hidden{ 
    font-size: .7em; 
    text-align: center; 
    position: relative; 
    height: 30px; 
    zoom: 1; 
} 
#top_mailing #top_mailing_hidden div{ 
} 
#top_mailing #top_mailing_hidden a{ 
    color: #acffc0; 
    font-weight: bold; 
} 
#top_mailing #top_mailing_visible{ 
    height: 30px; 
    font-weight: bold; 
    font-size: .9em; 
    padding-top: 5px; 
} 
+0

Herhangi bir hata veriyor mu? Örneğin. Firebug –

+0

Nope, ve ben sadece tüm stil sayfamı kesip hala IE'de değil, FF'de çalışıyor ve bu yüzden CSS ile ilgili değil, IE'nin sevmediği bir CSS konumlandırma sorunu olduğunu düşündüm. – Brian

cevap

1

benim örnekte Bu davranışın nedeni, IE ben Aşağı .slideUp/tetiklemek için kullanıyordum hangi .focus tanımıyor olmasıdır: Burada

ilgili CSS olduğunu. here numaralı sorunu açıklayan iyi bir yanıt buldum, ancak bu, odakta bir CSS sınıfı eklemenize izin veriyor, ancak CSS sınıfı durumuma yardımcı olmadığından, slideUp/Down açık bir ayrı öğeyi .focus ile canlandırmam gerekiyor. herkesin fikirleri var mı?


Anladım! Daha doğrusu odak daha MouseEnter kullanmak zorunda kaldı, ama burada şeytan şartlı MouseEnter olay, nam IE ile tamamlanan script:

//Top Mailing List Drop down animation 
$(document).ready(function() { 

    if (jQuery.browser.msie === true) { 
     jQuery('#top_mailing') 
       .bind("mouseenter",function(){ 
        $("#top_mailing_hidden").slideDown('slow'); 
       }).bind("mouseleave",function(){ 
        $("#top_mailing_hidden").slideUp('slow'); 
       }); 
    } 

$('#top_mailing_hidden').hide(); 

// Expand Panel 
$("input#top_mailing").focus(function(){ 
$("#top_mailing_hidden").slideDown("slow"); 
}); 

// Collapse Panel 
$("input#top_mailing").blur(function(){ 
$("#top_mailing_hidden").slideUp("slow"); 
}); 

}); 
22

jQuery en slideUp(), slideDown() ve slideToggle() yılında position:relative elemanları ile çalışmaz IE7. Bazı kaydırma sorunları kayar kap içinde ve/veya elemanların için

zoom: 1; 

eklenerek çözülebilir.

Biz sürgülü sorunlardan bazılarını çözmek düzeni için <tablo> kullanmak dönmek zorunda kaldı.

+0

Hah, bu problemle daha önce karşılaştığım gibi masamdaki kafamı çarptırarak kurtardığın için teşekkürler. Kesinlikle +1 benden. – BobG

+2

20 saniye içinde bir cevap bulabildiğimde ve işimin geri kalanına geçtiğimde yığın akışını seviyorum. –

+0

nice one @ Bob-Fanger - bu sorunu çözdüm :) upvoted - şerefe –