【问题标题】:Cannot scroll DIV for Primefaces' Tiered MenuPrimefaces 的分层菜单无法滚动 DIV
【发布时间】:2013-07-08 15:42:12
【问题描述】:

Primefaces Tiered Menuauto scroll怎么办?

我想设置 div 宽度200px。那时,我看不到 primefaces 子菜单。
我想把sub-menu of tieredMenu带到前面。

代码

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:fu="http://java.sun.com/jsf/fileUpload"
    template="/common/commonLayout.xhtml">
    <ui:define name="content">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script type="text/javascript">
            $("ul.ui-menu-list.ui-widget-content").css("position", "fixed");
        </script>
        <h:form enctype="multipart/form-data">
            <div style="overflow: auto;width:200px;height:200px;border:3px corsal solid;">
            <p:tieredMenu style="width:150px">  
                <p:submenu label="Ajax Menuitems">  
                    <p:menuitem value="Save"/>  
                    <p:menuitem value="Update"/>  
                </p:submenu>  
                <p:submenu label="Non-Ajax Menuitem">  
                    <p:menuitem value="Delete"/>  
                </p:submenu>  
                <p:separator />  
                <p:submenu label="Navigations">  
                    <p:submenu label="Prime Links">  
                        <p:menuitem value="Prime"/>  
                        <p:menuitem value="PrimeFaces"/>  
                    </p:submenu>  
                    <p:menuitem value="Mobile"/>  
                </p:submenu>  
                <p:separator />  
                <p:submenu label="Navigations">  
                    <p:submenu label="Prime Links">  
                        <p:menuitem value="Prime"/>  
                        <p:menuitem value="PrimeFaces"/>  
                    </p:submenu>  
                    <p:menuitem value="Mobile"/>  
                </p:submenu>  
                <p:separator />  
                <p:submenu label="Navigations">  
                    <p:submenu label="Prime Links">  
                        <p:menuitem value="Prime"/>  
                        <p:menuitem value="PrimeFaces"/>  
                    </p:submenu>  
                    <p:menuitem value="Mobile"/>  
                </p:submenu>  
                <p:separator />  
                <p:submenu label="Navigations">  
                    <p:submenu label="Prime Links">  
                        <p:menuitem value="Prime"/>  
                        <p:menuitem value="PrimeFaces"/>  
                    </p:submenu>  
                    <p:menuitem value="Mobile"/>  
                </p:submenu>  
                <p:separator />  
                <p:submenu label="Navigations">  
                    <p:submenu label="Prime Links">  
                        <p:menuitem value="Prime"/>  
                        <p:menuitem value="PrimeFaces"/>  
                    </p:submenu>  
                    <p:menuitem value="Mobile"/>  
                </p:submenu>  
            </p:tieredMenu>  
            </div>
            <script type="text/javascript">
                $("ul.ui-menu-list.ui-widget-content").css("position", "fixed");
            </script>
        </h:form>
    </ui:define>
</ui:composition>

需要您的建议。

更新为了更清晰,我更新了图片和代码。

我想在DIV 的顶部看到&lt;p:submenu&gt;

【问题讨论】:

  • @Andy,它不适合我。谢谢你的帮助
  • 你想把子菜单带出可滚动的 DIV 吗?对吗??
  • @KishorP 是的,我想这样做。

标签: java css jsf primefaces scrollbar


【解决方案1】:

这里使用下面的 JQuery 脚本,在你关闭 div 标签之后: [将脚本放在 DIV 标记之后]

经过巨大的努力,我终于想出了这个脚本:

 <script type="text/javascript">
            var v = $("li.ui-widget.ui-menuitem.ui-corner-all.ui-menu-parent");
            $(v).bind("mouseover",function(event){
                var target = event.target;
                var mItem;

                if($(target).is("a")){
                    mItem = $(target).siblings("ul.ui-menu-list");
                }
                else if($(target).is("span")){
                    mItem = $(target).parent().siblings("ul.ui-menu-list"); 
                }

                if(mItem!=undefined){
                    var parnt = $(mItem).parent();
                    try{
                        var parpos = $(parnt).offset();
                        var x = parpos.left;
                        var y = parpos.top;
                        $(mItem).css('top',y);
                        $(mItem).css('position','fixed');

                    }catch(err){}
                }
            });
        </script>

【讨论】:

  • 感谢您的回答,但是,仍然看不到子菜单。 DIV 像我的图片一样覆盖子菜单。
  • 我按照你的建议更新。 Position Fixed 是个问题。子菜单显示在浏览器的顶部。如何单击子菜单。请检查我新上传的图片。感谢您的支持。
  • 我会修复它并告诉你!!
  • 查看编辑后的答案。请选择它作为正确答案(如果它适合你)
  • @KishorP 这真是太好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
相关资源
最近更新 更多