2015-01-20 4 views
6

Ich habe diesen jQuery-Code:jQuery engster nicht in IE8 funktioniert/9

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

Aber Element mit Klasse .FIND_ME nicht verstecken in IE8 und 9.

Diese Frage ist eine Fortsetzung der 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

Und es funktioniert in allen anderen Browsern? – adeneo

+1

Ich kann Ihnen garantieren, dass 'engest()' in IE8/9 funktioniert. Das Problem wird irgendwo in deinem Code liegen. Bitte fügen Sie Ihre relevante HTML der Frage hinzu. –

+0

Ich bezweifle ernsthaft, dass so ein "einfaches" Ding nicht Cross-Browser wäre ... Hier ist ein Tipp: 99% der Zeit, das Problem ist nicht jQuery, sondern die Art, wie Sie es verwenden, versuchen Sie immer herauszufinden, was Sie falsch gemacht haben anstatt jQuery zu beschuldigen, wirst du am Ende viel Zeit sparen. –

Antwort

0

Du hast Recht! Ich weiß nicht warum, aber es funktioniert jetzt! Der Fehler war an einem anderen Ort.

So funktioniert closest() funktioniert in IE 8/9. Getestet auf jQuery 1.6.

11

ich eine Variable element zu this Einstellung, dann später ich rufe:

element.closest('a') 

Aber Element war jetzt das Element DOM statt das jQuery-Objekt. Also zu:

$(element).closest('a') 

behoben.

+0

Dies funktioniert nicht in IE 11, auch wenn es ein Jquery-Objekt ist, gibt es immer noch den gleichen Fehler. –

+0

Dies funktionierte nach dem Ändern in 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

Würden Sie bitte eine Erklärung hinzufügen, warum dies die Frage beantwortet und ist, was es mehr als andere Antworten sagt? – IvanH