$(document).ready()在f:ajax渲染后不运行

时间:2011-06-02 12:35:42

标签: jquery ajax jsf-2

我有一些jQuery代码可以在每个$(document).ready()事件上运行。 我还有一些<f:ajax>标签可以重新呈现页面的某些部分。

我注意到当我重新渲染一个组件时,$(document).ready()不会被调用。

有没有办法在每次<f:ajax>重新渲染后运行javascript代码? (我在技术上可以使用onevent标签,但这对我来说是不利的解决方案,因为我必须在每个<f:ajax>上调用该函数

仅举例说明,这是jQuery代码:

$(document).ready(function() { ...CODE... }

和JSF代码:

<f:ajax event="click" render=":someComponentID"/>

谢谢!

更新此问题可能与this one重复。我正在研究它。

UPDATE2 使用JSF Javascript事件绑定很容易解决这个问题:

jsf.ajax.addOnEvent(function(data){
  if (data.status === 'success') {
    // Do stuff here
  }
}

在JSF 2参考

下阅读更多相关信息

2 个答案:

答案 0 :(得分:4)

当DOM从初始加载完全加载时,$(document).ready()事件将触发一次。

ajax事件可能会更改DOM,但不会重新加载页面,因此$(document).ready()不会再次触发。

我注意到Google在Gmail中解决此问题的方法是使用a high frequency timer

答案 1 :(得分:0)

使用事件和听众..

阅读Ajax tag events and listeners