Этот код JQuery для переключения div не работает в IE7, но работает в других браузерах - PullRequest
0 голосов
/ 20 марта 2012

Вот моя проблема, у меня есть кусок jquery, который отлично работает в современных браузерах, но не будет работать в IE7.

Идея состоит в том, когда вы нажимаете на один из тегов ,Откроется div под названием "innerdetails".

Вот мой HTML:

<ul class="table">
<li><a href="#">CLICK HERE</a></li>
<li><a href="#">Techniques</a> </li>
<li >3</li>
<div class="innerdetails">
   Technical services, including MARC.
</div>
</ul>

Вот код Jquery, вызывающий оскорбления.

$(document).ready(function() {
    $("ul.table li a").click(function() {
    $(this).parent("li").parent("ul").children(".innerdetails").toggle();
    alert ( $(this).parent("li").parent("ul").children(".innerdetails").length )
    return false;
    });
});

Интересно то, что в предупреждении, IE7 возвращает "0" как длину для .children (". Детали внутреннего курса")

Chrome возвращает "1"

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Вероятно, проблема связана с тем, что это недопустимый HTML (тег ul не может содержать тег div), поэтому IE7, вероятно, не считает его частью дерева DOM.

Чтобы исправить, попробуйте поместить div внутри тега li (или просто использовать вместо него тег li), затем .toggle(), используя li.

1 голос
/ 20 марта 2012

Я не знаю точно, почему, но если вы измените children на find, это будет работать

$("ul.table li a").click(function() {
    $(this).parent("li").parent("ul").find(".innerdetails").toggle();
    alert ( $(this).parent("li").parent("ul").find(".innerdetails").length )
    return false;
});

И jsfiddle http://jsfiddle.net/6heVt/2/

...