如何将onclick事件添加到primefaces咆哮?

时间:2014-02-19 14:28:21

标签: javascript jquery jsf primefaces growl

我在向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必须有一些特别之处。

1 个答案:

答案 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(),如问题评论之一所示。