grails ajax 调用需要在每个模板中重新加载 jquery 代码

grails ajax call needs to reload jquery code in each template

我正在使用 grails 2.4 并且 AJAX 使用 formremote、remotelink、submittoremote 等进行请求

当我ajax调用和渲染模板时,我需要重新编写相关的jquery。

喜欢

$('.customdatepicker').datepicker({
                    format: "dd/mm/yyyy",
                    autoclose:true,todayHighlight: true
                });

所有模板中的重复代码, 我需要一些东西,这样我只需要编写一次 jquery 代码。

如果我在布局中定义它,那么它仅适用于所有非 ajax 调用。

谢谢。

您应该考虑以下几点:


当您使用 ajax 加载内容时,使用它创建的元素不会 自动拥有其他所有绑定和事件 在页面加载时创建的元素有。如果你需要你的元素有 ajax 之后的某种行为,那么你应该创建函数 您可以调用表单远程标记的 onSuccess


您可以使用普通形式并使用 jquery 的 on 函数作为

$('#my-element-in-page-when-loaded').on('click', 'my-ajax-element', function(){ /*jquery ajax functions load, get, post, ajax*/})

而不是

$('my-ajax-element').click();

因为后者只有在页面初始加载时存在 my-ajax- 元素时才有效。


如果问题是您的 javascript 加载顺序不正确,那么您应该在模板中编写如下代码

<content tag="javascript">
    //your js
</content>

和以下布局代码,在您声明资源或资产的位置之后 javascripts。

//your layout assets
<g:pageProperty name="page.javascript"/>

通过这种方式,您将能够在文件中声明一个包含所有常用功能的文件,然后在

中声明所有视图特定的js
<content tag="javascript">
    //your view specific code.
</content>