2015-01-20 2 views
6

У меня есть этот JQuery код:JQuery ближайшим не работает в IE8/9

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

Но элемент с классом .FIND_ME не скрывает в IE8 и 9.

Этот вопрос является продолжением 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

И он работает во всех других браузерах? – adeneo

+1

Я могу гарантировать, что 'ближайшее()' отлично работает в IE8/9. Проблема будет в вашем коде где-нибудь. Добавьте свой соответствующий HTML-код к вопросу. –

+0

Я серьезно сомневаюсь, что такая «простая» вещь не будет кросс-браузером ... Вот совет: в 99% случаев проблема не в jQuery, а в том, как вы ее используете, всегда пытайтесь выяснить, что вы сделали неправильно вместо того, чтобы обвинять jQuery, вы в конечном итоге избавляете много времени. –

ответ

0

Вы правы! Я не знаю почему, но теперь это работает! Ошибка была в другом месте.

Таким образом, closest() отлично работает в IE 8/9. Протестировано на jQuery 1.6.

11

Я устанавливал переменную element в this, то позже я звоню:

element.closest('a') 

Но элемент теперь элемент DOM вместо объекта JQuery. Таким образом, изменение:

$(element).closest('a') 

исправлено.

+0

Это не работает в IE 11, даже если это объект JQuery, он все равно дает ту же ошибку. –

+0

Это сработало после изменения его в 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

Не могли бы вы добавить какое-то объяснение, почему это отвечает на вопрос и что он говорит больше, чем другие ответы? – IvanH

Смежные вопросы