【发布时间】:2012-02-17 22:26:04
【问题描述】:
我们的应用程序是 JSF2 框架,当我们在某些场景中进行 Ajax 调用时,当 Ajax 响应从服务器返回时,我们需要重新调用 java-script(jQuery-for UI style)。
当 Ajax 响应返回时,没有调用 javascripts..
有什么办法可以启用吗?
【问题讨论】:
标签: javascript ajax jquery jsf-2
我们的应用程序是 JSF2 框架,当我们在某些场景中进行 Ajax 调用时,当 Ajax 响应从服务器返回时,我们需要重新调用 java-script(jQuery-for UI style)。
当 Ajax 响应返回时,没有调用 javascripts..
有什么办法可以启用吗?
【问题讨论】:
标签: javascript ajax jquery jsf-2
要么使用jQuery.delegate() 或jQuery.on()(取决于jQuery 版本)来代替对HTML DOM 树中的每个更改重新应用函数,例如:
jQuery(selector).on(eventName, callbackFunction);
或让JSF通过jsf.ajax.addOnEvent指定一个JSF ajax事件处理程序来重新调用JS函数,例如:
jsf.ajax.addOnEvent(function(data) {
if (data.status == "success") { // Can be 'begin', 'complete' and 'success'.
// Re-invoke your JS functions here.
}
});
【讨论】:
load 事件不会在 ajax 响应上调用。您宁愿修改您在现有 onload 函数中所做的任何事情。
addOnEvent() 这里。或者使用on() 在您当前的onload 处理函数内部 执行的任何操作上。例如。 jQuery(document).ready(function() { jQuery(someSelector).click(someCallback); }); 应该是 jQuery(document).ready(function() { jQuery(someSelector).on("click", someCallback); }); 。
jsf.ajax.addOnEvent()?您需要确保在自动包含的 JSF JavaScript 之后 触发它。把它放在$(document).ready() 什么的。