【问题标题】:jQuery Mobile Menu Accordion Not Working ProperlyjQuery Mobile 菜单手风琴无法正常工作
【发布时间】:2012-07-30 17:26:05
【问题描述】:

我正在尝试建立一个 jquerymobile 站点,但我在首页的手风琴菜单上遇到了一点问题,这是一个没有 jquerymobile 的手风琴的工作示例:http://dl.dropbox.com/u/22874377/Mobile/accordion.html 但当与 jquerymobile 一起使用时在这里看到的不起作用:http://dl.dropbox.com/u/22874377/Mobile/app.html

几乎发生的事情是,即使我将它设置为手风琴,它也会强制从 jquerymobile 进行页面转换并尝试加载子列表项,就好像它们包含在单独的页面上一样

关于为什么会这样的任何想法?或者我可以做些什么来解决它?

如果您不想查看工作示例,这里是简单的脚本

<style>
#nav li ul {
display: none; // used to hide sub-menus
}
</style>
<script>
$(document).ready(function () {
  var checkCookie = $.cookie("nav-item");
  if (checkCookie != "") {
    $('#nav > li > a:eq('+checkCookie+')').next().show();
  }
  $('#nav > li > a').click(function(){
      var navIndex = $('#nav > li > a').index(this);
      $.cookie("nav-item", navIndex);
      $('#nav li ul').slideUp();
       if ($(this).next().is(":visible")){
       $(this).next().slideUp();
       } else {
       $(this).next().slideToggle();
       }
   });
}); 
</script>
<ul id="nav" data-role="listview" data-inset="true">
                <li data-theme="c">
                    <a href="#home" data-transition="flip">
                        Home
                    </a>
                </li>
                <li data-theme="c" data-icon="arrow-d">
                    <a href="#">
                        Info
                    </a>
                    <ul>
                    <li data-theme="c"><a href="#" data-transition="flip">About Katie</a></li>
                    <li data-theme="c"><a href="#" data-transition="flip">Availability</a></li>
                    <li data-theme="c"><a href="#" data-transition="flip">Pricing</a></li>
                    <li data-theme="c"><a href="#" data-transition="flip">Contact</a></li>
                    <li data-theme="c"><a href="#" data-transition="flip">Downloads</a></li>
                    <li data-theme="c"><a href="#home" data-transition="flip">Back to Home</a></li>
                    </ul>
                </li>
                <li data-theme="c">
                    <a href="#home" data-transition="flip">
                        Galleries
                    </a>
                </li>
                <li data-theme="c" data-icon="arrow-d">
                    <a href="#home" data-transition="flip">
                        Client Proofs
                    </a>
                    <ul>
                    <li data-them="c"><a href="#" data-transition="flip">Monica &amp; Andrew's Excellent Wedding</a></li>
                    <li data-theme="c"><a href="#home" data-transition="flip">Back to Home</a></li>
                    </ul>
                </li>
                <li data-theme="c">
                    <a href="#home" data-transition="flip">
                        Testimonials
                    </a>
                </li>
            </ul>

【问题讨论】:

  • 您应该在已展开的选项卡上捕获点击,并且什么也不做。从现在起,您可以通过单击同一选项卡使其像疯了似的动画。此外,由于它在排队,你可以连续点击二十次,然后看它动画一段时间。
  • 对不起,我不太确定你想说什么?如果您查看示例,您会明白我所说的功能是什么意思,它在非 jquerymobile 示例上工作得很好,但是当我使用 jquerymobile 时,它​​不能正确触发手风琴
  • 好吧,如果你现在去看非 jquerymobile 手风琴,我已经通过添加一个简单的 cookie 来纠正动画问题,真正的问题是我如何真正解决手头的问题?这是 jquerymobile 中的非功能

标签: jquery ajax jquery-mobile navigation accordion


【解决方案1】:

很快,只需检查示例中的不同链接元素,您就可以看到它们有 home&ui-page=nav-(a number) 作为 href 属性,这会导致它打开一个新页面:...Mobile/app.html#home&ui-page=nav-0

这就是它在新页面中打开的原因,href 属性应该为空(或 #),因为您不会使用它来导航您的网站,而只是使用它来激活上下滑动...

(至于他们为什么会得到这个,可能是因为你的自动用户界面......但我无法帮助你)

【讨论】:

  • 有趣的是,即使我删除了a href 属性并简单地将其保留为li,它仍然会在新页面中打开它
  • 如果您查看代码,您还会注意到 href 属性全部为空或设置为 # ,除了转到主页和返回主页按钮的主要属性
  • 是的,但是当您使用 UI(如 jqueryUI)时,它会自动添加一些类,我的猜测是您的 jquerymobile 在您的 href 元素末尾添加这些链接......当您删除 &ui-来自href的页面blabla它不会在新页面中打开。任何可以阅读该 jquerymobile 文档的地方?
  • 别担心,我很感激!我想通了,只需要重写所有内容并模仿样式。 data-role="listview" 应用的样式导致了冲突
  • 呵呵是的,我发现一旦我开始工作,风格总是会在某个地方产生问题;)
【解决方案2】:

你有问题

$(document).ready(function () {
 $('#nav > li > a').click(function(){
  if ($(this).attr('class') != 'active'){
  $('#nav li ul').slideUp();
  $(this).next().slideToggle();
 }

});

文档应该用引号引起来

$('document').ready(function () {

【讨论】:

  • 这显然不是问题,因为您可以看到它在非 jquerymobile 版本上工作得很好
  • 我确实测试过了,不幸的是它仍然没有解决问题,顺便说一句,我从来没有真正以这种方式使用过'document',只在调用函数时记录并且它总是有效..
  • 你需要导入 jQuery,因为 slideUp 和 slideToggle 函数是在 jQuery 中而不是在 jQuerymobile 中定义的
  • 大声笑,看看代码.. jquery 已经被导入,如果不调用 jquery 来获取一些额外的后台功能,移动网站实际上将无法正常运行
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 2015-01-16
  • 2018-08-21
  • 2011-05-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多