我已经在我的Rails应用程序中将框架从原型迁移到jQuery,我遇到了一个一致的问题,我需要一些建议。
我经常使用AJAX函数来更新页面的一部分。发生这种情况时,我使用的任何其他Javascript与更新的页面部分相关不再有效。最好的方法是什么?
我的大多数javascript都存在于jQuery(document).ready(function(){})中;有些功能超出了这种方法。我依靠jQuery .live()处理程序,或者通过调用我想在js.erb文件中“重新初始化”的函数来解决这个问题。
最好的方法是什么?我应该:
期待您的反馈,感谢您的建议。
-A
答案 0 :(得分:0)
aressidi - 您也可以使用.livequery(),因为这会将.live()与一些额外的铃声和哨声封装回调等等。同时考虑对某些事件处理程序使用.unbind()(例如切换等)。
此处有更多信息:http://docs.jquery.com/Plugins/livequery
吉姆
答案 1 :(得分:0)
在回调中使用trigger()来触发事件。将live()用于绑定到正在更新的DOM区域的事件。
我总是使用这种模式:
的Ajax:
$(.link).live("click", function(){
$.ajax({
url: '/controller/action',
success: function(response){
$(document).trigger("event_name", ["method", response]);
$('.class').html(response.html);
}
});
})
Rails动作(重新呈现部分内容):
class Controller < ApplicationController
def action
render :json => {
:html => render_to_string(
:partial => 'partial_name',
:locals => {:var => @var}
)
}
end