P:ajax如何获得父元素的js变量



当我使用一些像p:commandButton这样的"简单"组件时,在其javascript事件处理程序中,我可以引用"this"变量:

<p:commandButton type="button" id="qwer" value="OK" onclick="myJsFunction(this)"/>

但是,当我处理p:ajax时,这个技巧不起作用,因为p:ajax没有呈现,并且没有元素可以从"this"引用。问题是如何从p:ajax调用js处理程序时获得父元素?

<p:commandButton id="qwer" value="OK">
   <p:ajax oncomplete="myJsFunction(this)"/>
</p:commandButton>

我知道我可以传递父按钮的id然后用jquery找到它,但也许有更好的方法?

oncomplete不能在源HTML DOM元素的上下文中运行。它没有被重新定位到它的任何on*属性。它在内部ajax处理程序的上下文中运行。在此上下文中有三个可用的参数:xhrstatusargs(希望每个参数都有一个自解释的变量名)。在PrimeFaces 5+中,源HTML DOM元素的客户端ID可以通过xhr.pfSettings.source获得。

所以,总而言之,这应该做:

<p:ajax oncomplete="myJsFunction(document.getElementById(xhr.pfSettings.source))" />

如果有必要的话,将myJSFunction更改为将xhr作为参数,以便在您打算在其他地方重用它时可以减少样板文件。

相关内容

  • 没有找到相关文章

最新更新