的p:contextMenu
有beforeShow
屬性,可以用來射擊一個客戶端邊JavaScript功能(可以在文檔中閱讀)。
它也有一個targetFilter,只能觸發'for'中的某些元素。如果你給你的形式明確的ID(如myForm的),你可以把它火只在菜單項鍊接:
<p:contextMenu for="menu" targetFilter="#myForm\\:menu .ui-menuitem-link" beforeShow="...">
你可以如做一個console.log(this)
或console.log(event)
,並從那些檢查你需要和訪問,這是很多。
contextMenu上下文中的'this'有一個jqTarget屬性,它將爲您獲取contextMenu被解僱的html組件(菜單),但是您也可以使用具有特定目標的事件對象菜單項。
<p:contextMenu for="menu" targetFilter="#myForm\\:menu .ui-menuitem-link" beforeShow="console.log(this); console.log(event)">
會給你一個輸出像
Object { _super: undefined, cfg: Object, id: "myForm:j_idt118", jqId: "#myForm\:j_idt118", jq: Object, widgetVar: "widget_myForm_j_idt118", keyboardTarget: Object, links: Object, rootLinks: Object, jqTargetId: "#myForm\:menu", 1 meer… } panelMenu.xhtml:655:174
Object { originalEvent: contextmenu, type: "contextmenu", isDefaultPrevented: returnFalse(), target: <a.ui-menuitem-link.ui-corner-all.ui-state-hover>, currentTarget: <div#myForm:menu.ui-panelmenu.ui-widget>, relatedTarget: null, timeStamp: 103942249, jQuery31004030775514688282: true, delegateTarget: HTMLDocument → panelMenu.xhtml, handleObj: Object, 1 meer… }
所以你需要JavaScript才能得到你需要什麼,你就不需要定製的jQuery的真正價值。
因爲我不知道你的隱藏字段在哪裏,所以我不能將其納入我的答案。對不起
您是否嘗試添加'
'給你的palenMenu?!? –@YagamiLight當我嘗試這個時,我有錯誤:'無法將行爲附加到非ClientBehaviorHolder父'的 – DanteVoronoi
這是很好的請求等待一秒鐘,我會提供一個答案,並嘗試解釋它 –