jQuery select2不使用ajax刷新

jQuery select2不使用ajax刷新,jquery,ajax,ruby-on-rails-3,jquery-select2,Jquery,Ajax,Ruby On Rails 3,Jquery Select2,我有一个Rails应用程序,我使用Select2JS库来选择应用程序中的字段。当初始页面加载时,select2会按其应该的方式在任何select元素上激发。但当我对部分内容进行ajax/JS刷新时,select2不会加载,默认为标准下拉选择 下面是我的示例代码: application.js _unassigned_calls.html.erb 根据我的代码,我假设加载DOM时会加载select2,但由于部分正在刷新,所以不会重新加载DOM 如何修复JS/jQuery函数,以便在Ajax/JS刷

我有一个Rails应用程序,我使用Select2JS库来选择应用程序中的字段。当初始页面加载时,select2会按其应该的方式在任何select元素上激发。但当我对部分内容进行ajax/JS刷新时,select2不会加载,默认为标准下拉选择

下面是我的示例代码:

application.js

_unassigned_calls.html.erb

根据我的代码,我假设加载DOM时会加载select2,但由于部分正在刷新,所以不会重新加载DOM

如何修复JS/jQuery函数,以便在Ajax/JS刷新时加载select2

非常感谢您的帮助。

index.js.erb正在DOM上执行刷新部分工作。它使用ID incative更改DOM。JS事件不会自动绑定新的DOM元素。因此,我们必须重新绑定它,在index.js.erb中添加以下内容:

$(".select").select2({
        placeholder: "Select One",
        allowClear: true
  })

当我将select2函数添加到index.js.erb时,我发现这是一个语法错误。我没有正确关闭该函数

以下是正确的代码:

index.js.erb


正在删除window.location=/users/sign\u in?duplicate\u session=true;从index.html.erb删除了我收到的错误,但不是问题所在。删除此选项将禁用Desive视图中的重复会话消息,因此我将其放回。最后,我需要做的就是将.select函数添加到index.js.erb中,并确保该函数已正确关闭。

感谢您的反馈,我已经更新了我的问题,以展示我如何使用Ajax/js进行部分刷新。我应该在什么时候重新绑定select2?抱歉,我对Ajax/JS/jQuery不是很在行,所以请原谅我的新手问题。当我在10秒后重新加载分区时,将其放入index.JS.erb中,它会将我重定向到根路径,而不是刷新分区。我的语法错了吗?根据您的代码,如果请求出错,它将重定向到/users/sign\u in?duplicate\u session=true。在执行$.getScript/调用时似乎出现了问题,您能检查一下rails日志吗?当我将代码放入index.js.erb'并让部分刷新时,以下是我在开发日志中收到的错误:Started GET/users/sign_in?duplicate_session=true for 127.0.0.1于2014-09-21 08:17:14-0500由MySessionsControllernew处理为HTML参数:{duplicate_session=>true}用户加载0.6ms选择用户。*从users.id=1的用户中,限制1重定向到筛选器链暂停为:require_no_身份验证已呈现或重定向已完成302在4ms ActiveRecord中找到:0.6ms`我已添加check_concurrent_会话方法和复制_会话?方法,以便您可以查看它。不确定为什么将重新绑定添加到index.js.erb会触发重复会话。
 <%= form_tag dispatch_call_call_path(call), :class => "dispatch-form-tag" do  %>
 <%= select_tag(:unit_ids, options_from_collection_for_select(Unit.active.order("unit_name ASC"), "id", "unit_name"), :include_blank => true, :class => 'select' )%>
 <%= button_tag 'Dispatch', class: 'btn btn-info', data: {disable_with: "<i class='icon-spinner'></i>Processing..."} %>  
 <% end %>
<div id="active">
  <%= render "assigned_calls" %>
</div>

<div id="inactive">
  <%= render "unassigned_calls" %>
</div>


<script>
  $(function() {
    setInterval(function(){
      $.getScript("/calls").fail(function(jqxhr, settings, exception) {
        window.location = "/users/sign_in?duplicate_session=true";
      });
    }, 10000);
  });
</script>
$("#active").html("<%= escape_javascript render("assigned_calls") %>");
$("#inactive").html("<%= escape_javascript render("unassigned_calls") %>");
def check_concurrent_session
   if duplicate_session?
     sign_out_and_redirect(current_user)
   end
end

 def duplicate_session?
   user_signed_in? && (current_user.login_token != session[:token])
 end
$(".select").select2({
        placeholder: "Select One",
        allowClear: true
  })
$("#active").html("<%= escape_javascript render("assigned_calls") %>");
$("#inactive").html("<%= escape_javascript render("unassigned_calls") %>");
$(".select").select2({
        placeholder: "Select One",
        allowClear: true
  });