如何通过jquery或javascript生成panelgrid的点击事件?

Kus*_*ahu 2 javascript jquery jsf primefaces

我使用的是 JSF 2.0 和 primefaces 3.0。我有一个 rowtoggler 和 rowexpansion。由于我使用的是 primefaces 旧版本,所以我没有 rowToggle 事件。并且我需要在行扩展时通过ajax调用服务器端的方法。所以我在 rowtoggler 周围放置了 div 标签并调用了一个 javascript 函数。现在我想通过位于 rowexpansion 中的 panelgrid 的 click 事件启动 ajax 调用。如果发生这种情况,它将看起来像 3.4 rowToggle 事件。

sie*_*z0r 5

单击行切换器时,您可以使用 jQuery 的事件绑定来执行 Javascript。

<h:form id="form">
    <p:dataTable id="dt" value="[1,2]">
        <p:column>
            <p:rowToggler />
        </p:column>
    </p:dataTable>
    <p:remoteCommand name="remotecommand"
        oncomplete="alert('remote command fired')" />
</h:form>
<script type="text/javascript">
$("[id='form:dt'] .ui-row-toggler").on("click", function() { remotecommand(); });
</script>
Run Code Online (Sandbox Code Playgroud)

Javascript 的解释:

$("[id='form:dt'] .ui-row-toggler")选择通过ID的数据表(form:dt),然后选择具有风格类的所有后代ui-row-toggler

.on("click", function() { remotecommand(); })绑定一个匿名函数的时候触发一个JavaScript函数声明为被点击的事件p:remoteCommand

您可以使用p:remoteCommand执行bean的方法与它的actionactionListener。;-)

请注意,我认为这不是一个长期解决方案。升级到 PrimeFaces 3.4 将是一个更好的解决方案。