ie9中jquery的问题(.slidedown(),.hide())

ie9中jquery的问题(.slidedown(),.hide()),jquery,internet-explorer-9,slidedown,Jquery,Internet Explorer 9,Slidedown,单击上面的链接后,我试图获取.slideDown()/.slideUp()的隐藏div。div具有显示属性“hidden”。除了IE9之外,它在所有浏览器中都可以正常工作。当我在IE9中单击我的链接时,什么也没有发生,这意味着隐藏的div没有显示。但是,如果我将div的display属性设置为“visible”,它将切换得非常好。我尝试了.show()/.hide()和.toggle(),但得到了相同的结果。你知道怎么解决这个问题吗 这是我的HTML代码 <span class="togg

单击上面的链接后,我试图获取.slideDown()/.slideUp()的隐藏div。div具有显示属性“hidden”。除了IE9之外,它在所有浏览器中都可以正常工作。当我在IE9中单击我的链接时,什么也没有发生,这意味着隐藏的div没有显示。但是,如果我将div的display属性设置为“visible”,它将切换得非常好。我尝试了.show()/.hide()和.toggle(),但得到了相同的结果。你知道怎么解决这个问题吗

这是我的HTML代码

<span class="toggle">
<li id="toggler">
    <a id="atoggler1" href="#">
        '.$info['category'].'
    </a></li></span>
<div class="hiddenDiv">
<p>
    $info['description']
</p>
.....
.....
 </div>
这是我的JavaScript

$(document).ready(function() {

$(".toggle").click(function () {

    // check the visibility of the next element in the DOM
    if ($(this).next().is(":hidden")) {
        $(this).next().slideDown("fast"); // slide it down
        return false;
    } else {
        $(this).next().slideUp("fast"); // hide it
        return false;
      }
  });
});
另外,我的HTML代码是围绕php代码编写的。为了清楚起见,我没有将其包括在内

如何解决这个问题?或者我的备选方案是什么??

$(this).next()
来自

<span class="toggle">

相反,在修复HTML中缺少的close div并修改代码以定位正确的div之后,这应该可以解决问题,这在IE9中对我来说很好:

$(document).ready(function() {

    $(".toggle").click(function () {
        $(this).closest(".toggle").next().slideToggle("fast");
        return(false);
    });

});​
工作演示:

  • 您问题中的HTML没有hiddenDiv的结束符
  • 我确保无论单击发生在哪里,它都会从
    .toggle
    对象执行
    .next()
  • 为了简单起见,我切换到了
    slideToggle()

  • 出于某种原因,如果我的CSS文件的链接标签在HTML标签中,它就不起作用了。但是如果我把它们放在外面,我的造型就被弄乱了。在做了大量研究之后,我发现jQuery或IE9中都有一个bug。当我运行控制台时,当我单击链接时,收到一个无效的调用错误。这个错误出现在我的jQuery代码的这一行。调用是
    this.appendChild(elem)
    但要修复它,我必须将其更改为this.parentNodeappendChild(elem)并且它修复了它

    因此,如果将来有任何其他人出现此问题,下面介绍如何解决此问题:

  • 根据您的jQuery版本,通过运行console检查有错误的行
  • 转到该行并更改
    this.appendChild(elem)
    this.parentNode.appendChild(elem)

  • 打开控制台(F12)并转到脚本控制台,查看是否发生了任何错误(您必须重新加载页面)您的标记不正确。请修改它。无效的html将在不同浏览器中为您提供不一致的结果。
    li
    元素只能包含在
    ul
    ol
    菜单
    元素中。
    <li id="toggler">
    
    <div class="hiddenDiv">
    
    $('#toggler').find('.hiddenDiv') 
    
    $(document).ready(function() {
    
        $(".toggle").click(function () {
            $(this).closest(".toggle").next().slideToggle("fast");
            return(false);
        });
    
    });​