使用具有 Jquery 的模板更新视图的 Grails remoteFunction 可以识别模板中的元素
Posted
技术标签:
【中文标题】使用具有 Jquery 的模板更新视图的 Grails remoteFunction 可以识别模板中的元素【英文标题】:Grails remoteFunction updating view using templates which has Jquery does recognize elements from templates 【发布时间】:2012-07-06 04:49:53 【问题描述】:我有一个带有按钮的视图,当它被点击时,它会调用 remoteFunction(ajax Call) 来更新一个带有 jQuery 函数的模板的 div。但是那个 jQuery 函数不能识别更新后的 div 中的元素。因此 jQuery 函数无法正常工作以呈现视图。
我的观点看起来像
<input type="button" value="Something" id="someButton" class="button" onclick="someFunction()"/>
<div id="updateDiv"> </div>
而js在按钮被点击时调用的样子
function someFunction()
$remoteFunction(controller:'myController', action:'someAction',update: 'updateDiv'
);
functionForJQuery();
function functionForJQuery()
var $someThing = $('.someClassName');
在myController中,
def someAction=
//doSomething
render (view:"/templates/_myTemplate")
最后是_myTemplatetemplate,
<g:textField class="someClassName" value="someValue" />
但就像我上面所说的,当调用 functionForJquery 时,它无法识别该 textField。有人可以帮我解决这个问题吗?
我也尝试过 onComplete,或者在 remoteFunction 之后。
【问题讨论】:
【参考方案1】:查看要在选择器中使用的 jQuery .on
(jQuery 1.7 或更高版本)函数或 .delegate
(1.7 之前)函数。这些将处理程序附加到页面首次加载或动态添加时存在的选定元素。像这样的:
function functionForJQuery()
$('body').delegate(".someClassName", "click", function()
//do whatever here
);
这会将函数附加到body
中的一个元素,该元素具有类someClassName
到click
事件。
【讨论】:
请注意,您可能会看到使用 .live() 的示例,但不推荐使用/不推荐使用它。更多信息请参见此处api.jquery.com/live【参考方案2】:在你的控制器中,
试一试
def someAction=
render template:"/templates/_myTemplate", model:model;
而不是
def someAction=
//doSomething
render (view:"/templates/_myTemplate")
祝你好运
【讨论】:
以上是关于使用具有 Jquery 的模板更新视图的 Grails remoteFunction 可以识别模板中的元素的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 django 模板中的不同提交按钮在更新视图中自定义成功 url?
jquery ajax get call 上的 django 视图呈现的错误 html 模板
带有 jquery 的 Django 模板:现有页面上的 Ajax 更新
如何在 Xamarin 中使用具有 android/IOS 特定视图的控制模板