2012-12-05 26 views
9

IE8'deki bir div durumunu kontrol etmekle ilgili bir sorun yaşıyorum. Farenin şu anda bazı div'larda gezinip kaymadığını kontrol etmek istiyorum. Şu anda IE8'de aşağıdaki hatayı alıyorum: Syntax error, unrecognized expression: hover. Aşağıda hataya neden olduğunu jQuery geçerli:jQuery .is (": hover") IE8'de

// This function will close the slideout of widgets 
function CloseWidgetPanel() 
{ 
    if (!$("#widgets").is(":hover") && !$(".widgetPanel").is(":hover")) 
    { 
     if ($("#widgets").is(":animated")) 
     { 
      $("#widgets").stop(true, true); 
     } 
     $("#widgets").hide("slide", { direction: "right" }, 300); 
    } 
    else 
    { 
     // We are currently hovering over a panel, so check back in 2 seconds. 
     setTimeout(CloseWidgetPanel, 2000); 
    } 
} 
+0

'$ ("# widget") sonucunu depolamak düşünün' yerine onu 4 kez (bu sonuçlanan sorgulama bir değişken olarak daha fazla DOM işlemi). – wsanville

+3

': hover' basitçe [geçerli bir jQuery seçici değil] (http://api.jquery.com/category/selectors/). – Sparky

+1

Bunun yerine .hover() 'olayına (a.k.a.' .on ('hover', ...) ') ihtiyacım var. – Blazemonger

cevap

10

Alternatif yol: Sonra

$(".widgetPanel, #widgets").hover(function() { 
    $(this).toggleClass('hover') 
}); 

:

if (!$("#widgets").is(":hover") && !$(".widgetPanel").is(":hover")) 

change to 

if (!$("#widgets").hasClass('hover') && !$(".widgetPanel").hasClass('hover')) 
7

jQuery :hover seçici uygulamıyor ve IE8 queryselectorall desteklemez, bu nedenle başarısız olur. Öğenin şu anda fare yöneticisi gibi üzerinde gezindiğini algılamak için başka bir yol bulmanız ve genel (veya ana kapsam) değişkenini belirleyen veya öğeye bir durum sınıfı/özniteliği uygulayan olaydan ayrılmanız gerekir.

+2

veya hover durumunda bir hover durumu – g19fanatic

+0

olduğunu ya da başlangıçta bir değişken üzerinde bir null değeri ayarlayın, sonra mouseeleave() içinde bir değer verin ve sonra koşullu bir deyim içinde yeniden başvurmak için bir sınıf uygular. Bu IE8 sorununu aşmanın kolay yolu. – blackhawk

+0

IE8 Standartlar modunda document.querySelectorAll http://msdn.microsoft.com/en-us/library/ff462057.aspx#selectorapi'yi destekler – sreekarun