如何防止 primefaces ajax 调用禁用我的脚本

How to prevent primefaces ajax calls from disabling my scripts

我的 Js 代码在 selectOneMenu 内的组件 class 上设置了 onclick,每当我在 selectOneMenu 内使用 <p:ajax> 时,脚本只运行一次。 如何防止呢?

<p:selectOneMenu id="GaStructNode_listForm_GaStruct"
        value="#{gaStructNodeController.selectedGaStruct}"
        style="margin-bottom: 10px;">
    <f:selectItem itemLabel="#{bundle.defautlItem}"/>
    <f:selectItems value="#{gaStructNodeController.findAllGaStructs()}" var="gs"
        itemLabel="#{gs.name}" itemValue="#{gs}"/>
    <p:ajax event="itemSelect" update="@form :GaStructNode_listForm :GaStructNode_editForm :GaStructNode_picklist_form"/>
</p:selectOneMenu>


<script type="text/javascript">
    $('.ui-selectonemenu-item-group').click(function () {
        alert("Handler for .click() called.");
    });
</script>

将您的脚本放入一个函数中,并从 p:ajax

的 oncomplete 调用它
<script type="text/javascript">
    $('.ui-selectonemenu-item-group').click(function () {
        alert("Handler for .click() called.");
    });

    function m() {
        $('.ui-selectonemenu-item-group').click(function () {
            alert("Handler for .click() called.");
        });
    }
</script>

并更改您的 ajax:

<p:ajax oncomplete="m()" event="itemSelect" update="@form :GaStructNode_listForm :GaStructNode_editForm :GaStructNode_picklist_form"/>