【问题标题】:jQuery Mobile - changePage and select menu not workingjQuery Mobile - changePage 和选择菜单不起作用
【发布时间】:2012-07-22 21:31:27
【问题描述】:

这是我第一次使用 jQuery Mobile,我实际上是从我得到的 WP 主题中使用它。我知道这可能与主题有关,但我只是想确定一下。

所以,它是一个 Wordpress jQuery Mobile 主题,您插入它,它就可以工作了。问题是,我已将 Wordpress 菜单从 UL 转换为 SELECT。

然后,我添加了一些 jQuery,通过获取所选选项的值来触发更改时的选择。那行得通,我得到加载的东西,然后页面以我想要的效果改变。

但我无法让“选择”菜单显示当前选定的项目。它总是恢复到第一个。

我用过:

$('#main_menu').selectmenu("refresh");
$('#main_menu').selectmenu("refresh", true);

什么都没有……

您可以在此处查看该站点:http://avatarblog.fl1hosting.com/ 并查看源代码。

你会看到我的移动事件都在 jQuery Mobile 包含之前,这对我来说没有多大意义,但如果我把它们放在之后,就没有任何效果了。

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: jquery-mobile refresh select-menu


    【解决方案1】:

    您需要设置要在选择菜单中显示的选项。试试这个,

    $("#main_menu")[0].selectedIndex = 2; // this will select the 3rd in the menu list
    $("#main_menu").selectmenu("refresh");
    

    您可以在 header.php 中添加以下脚本:

    $(document)
    .unbind("pageshow.initMenuBtn")
    .bind("pageshow.initMenuBtn", 
        function() {
            $.mobile.activePage = $("div.ui-page-active");
            $("#main_menu", $.mobile.activePage)
              .unbind("change")
              .bind("change", function() {
                    var page = $(this).val();
                    $.mobile.changePage(page);
                });
    
            var selectedIndex = 0;
            $("#main_menu>option", $.mobile.activePage).each(function(index) {
                if ($(this).hasClass("current-menu-item")) {
                    selectedIndex = index;
                }
            });
            $("#main_menu", $.mobile.activePage)[0].selectedIndex = selectedIndex;
            $("#main_menu", $.mobile.activePage).selectmenu("refresh");
        });
    

    【讨论】:

    • 嗨,杰。恐怕那没有用。我也不完全明白......该代码不会总是显示列表中的第 3 项吗?我想要做的是显示当前页面项目,所以如果我点击关于我们,选择显示关于我们等等。感谢您的帮助。
    • 是的,它不会像那样工作。请在我上面的帖子中查看我的更新。在第一个代码中,我只是告诉您为什么要调用 $("#main_menu").selectmenu("refresh");没有像你预期的那样工作。这实际上是因为您选择的值始终是第一个选项。
    • 谢谢。恐怕那也没用。这是一个 Wordpress 站点,因此我将在 header.php 上添加所有代码,该文件包含在所有模板中。选择列表是从数据库中动态生成的,当单击一个选项时,jQuery 会获取该选项的值并将 changePage 触发到该值。
    • 好的。那么请检查上面的更新代码。根据生成的HTML,其实可以通过option元素类属性获取selectedIndex。
    • 顺便说一句,上面的代码可以放在你的 header.php 文件中,它已经处理了应该在所有页面中显示哪个菜单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多