首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未应用于使用getJSON生成的菜单栏的jQuery UI CSS样式

问未应用于使用getJSON生成的菜单栏的jQuery UI CSS样式
EN

Stack Overflow用户
提问于 2012-12-04 06:30:06
回答 1查看 1.7K关注 0票数 2

我正在尝试使用JSON数据生成一个jQueryUI菜单栏。JSON被正确地解析为有效的HTML.然而,菜单栏显示为一个无样式的无序列表,而不是像在http://view.jqueryui.com/menubar/demos/menubar/default.html上看到的那样显示为带样式的菜单栏。请注意,将JSON数据转换为HTML的例程此时不会深入到一个菜单级别,因此子菜单选项(Open、Save、Close等)是故意不读的。

出于某些原因,如果我在menuBar.jsp中硬编码与下面的jQuery方法生成的完全相同的HTML,菜单栏样式就会显示得很好。

以下是主页(appFrameNew.jsp):

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>    

<title>Menu Test</title>

    <link rel="stylesheet" href="http://code.jquery.com/ui/1.8.18/themes/base/jquery-ui.css" />
    <link rel="stylesheet" href="http://view.jqueryui.com/menubar/themes/base/jquery.ui.menu.css" />
    <link rel="stylesheet" href="http://view.jqueryui.com/menubar/themes/base/jquery.ui.menubar.css" />

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>    
    <script src="http://view.jqueryui.com/menubar/ui/jquery.ui.core.js" type="text/javascript"></script>
    <script src="http://view.jqueryui.com/menubar/ui/jquery.ui.widget.js" type="text/javascript"></script>
    <script src="http://view.jqueryui.com/menubar/ui/jquery.ui.menu.js" type="text/javascript"></script>
    <script src="http://view.jqueryui.com/menubar/ui/jquery.ui.menubar.js" type="text/javascript"></script>
    <script src="http://view.jqueryui.com/menubar/ui/jquery.ui.position.js" type="text/javascript"></script>

    </head>
    <body>

    <div id="layout" class="layout">

       <jsp:include page="menuBar.jsp" flush="true" />

    </div>

    </body>
    </html>

这是menuBar.jsp

代码语言:javascript
复制
<div class="demo"></div>

<script type="text/javascript">
    function select(event, ui) {
        if (ui.item.text() == 'Quit') {
            $(this).menubar('destroy');
        }
    }
    $(function() {
        $("#bar1").menubar({
            position: {
                within: $(".demo").add(window).first()
            },
            select: select
        });
    });

$.getJSON('menuBarTestJSON.json', function(data) {
    var output='<ul id="bar1" class="menubar">';
    for (var i in data.menuOptions) {
        output+='<li><a href="#">' + data.menuOptions[i].menubarItem + '</a></li>';
    }
    output+="</ul>";
    $(".demo").html(output);
});

</script>

<ul id="bar1" class="menubar">
    <li>
        <a href="#File">File</a>
        <ul>
            <li><a href="#Open">Open</a>
            <li><a href="#Save">Save</a></li>
        </ul>
    </li>
</ul>

最后是menuBarTestJSON.json

代码语言:javascript
复制
{"menuOptions":[
    {
        "menubarItem":"File",
        "menuElement": {
            "option":"Open",
            "option":"Save",
            "option":"Close",
            "option":"Quit"
        }
    }
]}

几天来,我一直在网上寻找解决方案,但都是徒劳的,我需要尽快继续这个项目。任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 07:12:42

您需要执行以下任一操作:

  1. 将初始化jQuery UI菜单的代码添加到getJSON回调或
  2. 使用http://api.jquery.com/live/监视对DOM的更改并初始化jQuery UI菜单

基本上,发生的情况是$("#bar1").menubar在ready上生效一次。但是当你更新它的内容时,它并不知道它需要重新启动。您必须手动要求它再次初始化菜单,或者让它监视更改。

示例:

代码语言:javascript
复制
<script type="text/javascript">
    function select(event, ui) {
        if (ui.item.text() == 'Quit') {
            $(this).menubar('destroy');
        }
    }
    function initMenu() {
        $("#bar1").menubar({
            position: {
                within: $(".demo").add(window).first()
            },
            select: select
        });
    }
    $(function() { initMenu(); });

   $.getJSON('menuBarTestJSON.json', function(data) {
       var output='<ul id="bar1" class="menubar">';
       for (var i in data.menuOptions) {
            output+='<li><a href="#">' + data.menuOptions[i].menubarItem + '</a></li>';
       }
       output+="</ul>";
       $(".demo").html(output);
       initMenu();
   });

</script>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13692927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档