jQuery策略问题

时间:2010-07-30 15:53:44

标签: javascript jquery ruby-on-rails javascript-events

我已经在我的Rails应用程序中将框架从原型迁移到jQuery,我遇到了一个一致的问题,我需要一些建议。

我经常使用AJAX函数来更新页面的一部分。发生这种情况时,我使用的任何其他Javascript与更新的页面部分相关不再有效。最好的方法是什么?

我的大多数javascript都存在于jQuery(document).ready(function(){})中;有些功能超出了这种方法。我依靠jQuery .live()处理程序,或者通过调用我想在js.erb文件中“重新初始化”的函数来解决这个问题。

最好的方法是什么?我应该:

  • 通过名称显式调用函数作为回调的一部分以使其工作
  • 继续使用.live()进行提交/点击事件
  • 还是有更好,更有效的方法来处理这个

期待您的反馈,感谢您的建议。

-A

2 个答案:

答案 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