根据数据属性查找元素而不是 class。 - Rails

Finding element based on data attribute not class. - Rails

我目前有这个设置。

对于HTML:

<%= select_tag "Groups", options_from_collection_for_select(@groups, "id", "name", params[:filter]),
  class: "filter-groups",
  prompt: "All Groups"
%>

对于jquery:

$(document).on('ready page:load', function() {
  $('.filter-groups').on('change', function() {
    window.location.replace('/people?filter='+this.value);
  });
});

所以,现在我正在使用 class 来查找元素。但我想改为使用数据属性。谁能帮我这个?仅供参考,我根本不需要 class 所以我想为数据属性完全删除它。

通常,使用 类 从 javascript 中查找页面上的元素是一种不好的做法,因此您希望将其更改为 data- 属性是正确的。 请使用以下内容:

<%= select_tag "Groups", options_from_collection_for_select(@groups, "id", "name", params[:filter]),
  data: { filter_groups: '' },
  prompt: 'All Groups'
%>

这将生成以下 HTML 代码:

<select name="Groups" id="Groups" class="filter-groups" data-filter-groups="">

在 jquery 中你可以使用:

$('[data-filter-groups]').on('change', ...)

Rails 将自动用破折号替换下划线。

另请阅读以下内容(如果有帮助):https://medium.com/@coorasse/how-to-access-your-dom-from-javascript-77faa762c288