使用JQM(jQueryMobile),为什么可折叠嵌套另一个可折叠标题会间歇性切换

Using JQM (jQuery Mobile), why does the Collapsible nest another collapsible-heading-toggle intermittently?

本文关键字:可折叠 标题 另一个 嵌套 JQM jQueryMobile 为什么 使用      更新时间:2023-09-26

特别奇怪的是,我没有使用JS来调整任何东西,只是调整HTML数据属性。原始标记:

<div id="navContainer">
    <div data-role="collapsible" data-iconpos="right" data-collapsed="true" data-theme="b">
        <h4>Go to a different page &raquo;</h4>
        <ul data-role="listview">
            <li class="current">
                <a href="http://m.brooksransom.com/about-us/" class="ui-btn ui-btn-a ui-btn-icon-right ui-icon-carat-r ui-btn-active">About Us</a>
            </li>
          ...
        </ul>
    </div>
</div>

我应该注意,这是在SilverStripe之上构建的,SilverStrip是一个PHP MVC产品。如果缓存是为了提高性能,那么它就非常有用,有时清除缓存可以解决这样一个奇怪的问题。在这种情况下,我似乎没有,但我想"把我所有的牌都摆在桌面上"。这是JQM"增强标记":

<div id="navContainer">
    <div class="ui-collapsible ui-collapsible-inset ui-corner-all ui-collapsible-themed-content ui-collapsible-collapsed" data-theme="b" data-collapsed="true" data-iconpos="right" data-role="collapsible">
        <h4 class="ui-collapsible-heading ui-collapsible-heading-collapsed">
            <a class="ui-collapsible-heading-toggle ui-btn ui-icon-plus ui-btn-icon-right ui-btn-b" href="#">
                <a class="ui-collapsible-heading-toggle ui-btn ui-icon-plus ui-btn-icon-right ui-btn-b" href="#">
                    Go to a different page »
                    <span class="ui-collapsible-heading-status"> click to expand contents</span>
                </a>
                <span class="ui-collapsible-heading-status"> click to expand contents</span>
            </a>
        </h4>
        <div class="ui-collapsible-content ui-body-inherit ui-collapsible-content-collapsed" aria-hidden="true">
    </div>
</div>

注意额外的ui可折叠标题切换:

<a class="ui-collapsible-heading-toggle ui-btn ui-icon-plus ui-btn-icon-right ui-btn-b" href="#">
    <a class="ui-collapsible-heading-toggle ui-btn ui-icon-plus ui-btn-icon-right ui-btn-b" href="#">

这是从哪里来的为什么是间歇性的?有时页面会开始加载它,然后它就会消失,标记也会正常结束。有时它会永久地停留在那里,事件会被搞砸,隐藏的内容不会扩展。在原始标记中没有什么奇怪的东西应该引起它。我很困惑。

这是完全相同的页面-我刚刚刷新了它。现在注意,标记和行为是完美的。内容是一个列表视图btw,与原始标记中的内容相同。

<div id="navContainer">
    <div class="ui-collapsible ui-collapsible-inset ui-corner-all ui-collapsible-themed-content ui-collapsible-collapsed" data-theme="b" data-collapsed="true" data-iconpos="right" data-role="collapsible">
        <h4 class="ui-collapsible-heading ui-collapsible-heading-collapsed">
            <a class="ui-collapsible-heading-toggle ui-btn ui-icon-plus ui-btn-icon-right ui-btn-b" href="#">
                Go to a different page »
                <span class="ui-collapsible-heading-status"> click to expand contents</span>
            </a>
        </h4>
        <div class="ui-collapsible-content ui-body-inherit ui-collapsible-content-collapsed" aria-hidden="true">
    </div>
</div>

你可以在现场查看http://m.brooksransom.com如果你愿意的话。任何顶级链接"有时"都会表现出这种行为。有时,如果在半秒钟后修复了渲染错误。很奇怪。

@ezanker看起来你的解决方案已经完成了。有一个间歇性但很小的问题,我挂了一些,但我记得在以前的静态导航下,我使用的是数据ajax="false"。至于jquery mobile被添加了两次(我想这就是Ilya Luzianin的意思),事实并非如此,我使用的是一个整体的移动解决方案,它是SilverStripe MVC框架的一部分。如果我还有什么不正确的地方,请告诉我,让@ezanker对此给予充分的赞扬。