无法为Primefaces的分层菜单滚动DIV

时间:2013-07-10 15:48:43

标签: java css jsf primefaces scrollbar

如何为Primefaces auto scroll Tiered Menu做什么?

我想设置div宽度200px。那时,我看不到主要的子菜单 我想带到前面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>

enter image description here

需要你的建议。

更新我更新图片和代码更清晰。

我希望<p:submenu>位于DIV的顶部。

1 个答案:

答案 0 :(得分:4)

在关闭div标签后立即使用以下JQuery脚本: [在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>

enter image description here