2015-01-20 11 views
6

Mam ten kod jQuery:jQuery na najbliższy nie działa w IE8/9

$(this).closest('div:has(.FIND_ME)').find('.FIND_ME').hide(); 

Ale element z klasy .FIND_ME nie ukrywa w IE8 i 9.

To pytanie jest kontynuacją Search for an item with a common ancestor

HTML:

<div> 
    <div><!-- all div without ID --> 
     <span>some text</span> 
     <div> 
      <span id="listener1">click here</span> 
      <span>sometext</span></div> 
     <div> 

     <span class="FIND_ME">Result Here</span></div> 
    </div> 

    <div> 
     <span>some text</span> 
     <div id="div1"> 
     <div id="div2"> 
      <span id="listener2">click here</span> 
      <span>sometext</span></div> 
     </div> 
     <div> 

     <span class="FIND_ME">Result Here</span></div> 
    </div> 
</div> 
+4

Działa to we wszystkich innych przeglądarkach? – adeneo

+1

Mogę zagwarantować, że 'closest()' działa poprawnie w IE8/9. Problem będzie gdzieś znajdować się w twoim kodzie. Dodaj odpowiedni HTML do pytania. –

+0

Poważnie wątpię, że taka "prosta" rzecz nie byłaby przeglądarką ... Oto wskazówka: 99% czasu, problem nie jest jQuery, ale sposób, w jaki go używasz, zawsze staraj się dowiedzieć, co zrobiłeś źle zamiast obwiniać jQuery, oszczędzasz mnóstwo czasu. –

Odpowiedz

0

masz rację! Nie wiem dlaczego, ale teraz działa! Błąd był w innym miejscu.

Tak więc closest() działa poprawnie w IE 8/9. Testowany na jQuery 1.6.

11

byłem ustawiając zmienną element do this, a potem na mnie wołał:

element.closest('a') 

Ale elementem było teraz element DOM zamiast obiekt jQuery. Tak więc zmiana na:

$(element).closest('a') 

naprawiono.

+0

To nie działa w IE 11, nawet jeśli jest to obiekt Jquery, nadal daje ten sam błąd. –

+0

To zadziałało po zmianie w IE 11 – Robert

0
closest = function (target, tag) { 
    if (target.parentElement == "undefined") { 
     return null; 
    } 
    if (target.parentElement.localName == tag) { 
     return target.parentElement; 
    } 
    return this.closest(target.parentElement, tag); 
}; 
+0

Czy mógłbyś dodać wyjaśnienie, dlaczego to odpowiada na pytanie i czy jest ono lepsze od innych odpowiedzi? – IvanH