jQuery MultiSelect插件SumoSelect不绑定到单页

时间:2015-06-23 15:55:02

标签: javascript jquery ruby-on-rails multi-select sumoselect.js

我循环遍历一个对象,对于循环中的每个实例,我想提供一个多选下拉列表(使用jQuery插件SumoSelect)。但是,现在,SumoSelect似乎只绑定到循环中的第一个多选下拉列表,而不是之后的任何下拉列表。循环中的每个下拉列表如何具有SumoSelect效果? (在Github上有一个未解决的问题)

查看控制台,我看到第一个下拉列表已附加:div class="SumoSelect" tabindex="0">,但这不适用于其他示例。

我尝试了几个不同的选项并查看了源代码(并搜索了一堆),但我不清楚我需要采取哪些不同的做法。

这是一个简化的例子。让我们说我有一个课程" post"可以有很多作者和#34;在我显示"帖子"的页面上,我想循环浏览帖子,并为每个帖子给用户一个多选下拉列表,从中选择作者添加到帖子中。现在,来自循环的第一篇文章的作者下拉列表具有正确的SumoSelect效果,但之后的任何帖子都没有SumoSelect:

posts / view.html.erb(此下拉列表为帖子和作者创建了一个连接表条目 - 执行此操作的控制器代码工作正常,问题只是在循环中的第一个下拉列表后绑定SumoSelect):

<% @posts.each do |post| %>
....
<select id="author-choice" name="author_ids[]"  multiple="true">
  <% Author.all.each do |author| %>
     <option value="<%= author.id%>",<%= author.name %></option>
  <% end %>
</select> ...

在我的javascript中,我有:

$(document).ready(function (){ 
  $('#author-choice').SumoSelect();
});

1 个答案:

答案 0 :(得分:0)

您的问题是每个下拉列表都具有相同的ID,并且ID应该是唯一的。更改您的select元素,以便author-choice是一个类(class='author-choice')并将jQuery选择器更改为$('.author-choice')。如果仍然没有解决问题,那么它现在是SumoSelect的错误,并且你必须使用迭代器包装应用SumoSelect的行:

$('.author-choice').each(function() {
    $(this).SumoSelect();
});