我在向growl元素添加任何类型的事件时遇到了问题。我的目标是通过右键单击来关闭咆哮。
我尝试了不同的解决方案,我的咆哮看起来像这样:
<h:form id="loginForm" class="col-md-2 col-md-offset-5 loginForm">
<p:growl id="growl" showDetail="false" life="3000" sticky="true" >
...Login Stuff ...
<p:commandButton id="loginButton" value="Login" update="growl js" styleClass="fullWidth loginElement"
actionListener="#{loginBean.loginShiro}" ajax="true"
oncomplete="handleLoginRequest(xhr, status, args)" />
</h:form>
起初我在我的javascript代码中尝试了类似的内容:
$( '#growl').onClick(function() {
alert('Test!!!')
});
我将“#growl”换成“.ui-growl”,“。ui-growl-item”和“.ui-growl-item-container”,但没有付出任何努力。
然后我想也许渲染javascript时不会渲染growl元素,我试图将javacode直接放在表单中,并使用commandbutton更新它。所以这部分直接采用以下形式:
<h:panelGroup id="js">
<script type="text/javascript">
$('#growl').onClick(function() {
alert('Test!?')
});
</script>
</h:panelGroup>
......效果不佳。
只是添加一个onclick =“...”属性无法正常工作,我无法添加元素因为咆哮只是一条消息而且它缺少一个接口。
我没有想法,你们有什么建议吗? 我不想要一个按钮来关闭它,我在这个答案的帮助下通过左键单击关闭它: https://stackoverflow.com/a/15711724/3297005
但那仍然不是我想要的。
最好的解决方案是: $('#grow')。mousedown(function(event){...}
我不知道是否有任何其他方法可以检查按下按钮是否是鼠标右键。
我希望有人有个主意。
谢谢你们
编辑:
感谢您的建议。
在您发表评论后我试图使用: $( “#登录表单\:growl_container”)。准备好(...) 这很有效。所以我认为它是我的元素的正确途径。
可是:
$("#loginForm\\:growl_container").click() and
$("#loginForm\\:growl_container").mousedown()
仍然无效:' - (
我也尝试在我的面板元素中更新它们,但也没有成功。
我尝试使用表单中的其他元素及其工作点击事件。 我认为这个p:growl或h:message elements必须有一些特别之处。
答案 0 :(得分:0)
由于p:growl
位于h:form
内,您无法仅通过其ID访问p:growl
。
访问时附加表单ID。
还有一件事,Primefaces似乎将文字_container
附加到p:growl
ID的末尾。
所以,如果你有
<p:growl id="myGrowl">...</p:growl>
然后Id将是:myGrowl_container
示例:
$("#loginForm\\:growl_container")
并且在使用Jquery时也尝试使用click()
,如问题评论之一所示。