代码之家  ›  专栏  ›  技术社区  ›  DA.

jquery accordion+anchor标记“卡住为块”错误?

  •  0
  • DA.  · 技术社区  · 14 年前

    样本页:

    http://jsbin.com/ohuze/2

    这是一个简单的jquery用户界面。每个手风琴面板都有一个带有此标记的UL(ol的工作原理相同):

    <ol>
            <li><a href="">Lorep ipsum dolor lorem ipsum dolor lorem ipsum dolor</a>?</li>
            <li><a href="">Lorep ipsum dolor lorem ipsum dolor lorem ipsum dolor</a>?</li>
    </ol>
    

    在ie6中,您将看到<a>标记似乎被呈现为块元素,因此问号最终被推到外部而不是文本行的末尾。此外,项目符号和/或列表项编号现在与文本底部对齐,而不是顶部对齐。

    我已经把它缩小到了javascript,它执行来制作手风琴。jquery的css并不是一个问题,因为仅仅禁用它并不能解决这个问题。

    有人知道IE6中会发生什么导致这个渲染问题吗?

    更新:显然,这也是一个IE7问题。

    更新2:在玩了一些游戏之后,我把范围缩小了一点:

    • 这个错误与列表无关。问题是jquery手风琴中的任何锚标记都将显示为display:block(即使css仍然显示display:inline)

    • 这个bug与jquery ui用来创建accordion的实际css无关。我创建了一个测试页面,它使用完全呈现的jquery accordion后处理源代码和附带的css。在这种情况下,锚定标记保持内联。

    总之:通过javascript呈现手风琴的过程似乎扰乱了锚标记的显示。这可能是一个表演/隐藏的问题?

    1 回复  |  直到 14 年前
        1
  •  0
  •   DA.    14 年前

    解决方案:

    结果(毫不奇怪)是IE6的布局问题。当jquery ui开始构建accordion时,锚标记不知何故丢失了layout(或者它们被赋予了layout?)。解决方案是添加一个回调函数,将其重新设置为(我认为)没有布局:

    $('.myDiv').accordion({ 
        collapsible: true, 
        autoHeight: false,
        active: false,
        change: function(){$(this).find('a').css('zoom','0')}
        });