使用动态ID在select上更改事件处理程序

时间:2014-12-03 14:42:51

标签: javascript jquery

我有一个包含以下几个选项的页面:

<div class="forms">
  <div class="activity_form" id="activity_8">
    <select id="activity_projectuser_id" name="activity[projectuser_id]">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>
  </div>
  <div class="activity_form" id="activity_9">
    <select id="activity_projectuser_id" name="activity[projectuser_id]">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>
  </div>
</div>  

现在我有一个事件处理程序来检索所选的值,该值仅适用于数字8

var ready;
ready = function() {
  $('#activity_8 #activity_projectuser_id').change(function() {
    console.log("yes!");
  });
};
$(document).ready(ready);
$(document).on('page:load', ready);

如何更改事件处理程序以使其适用于任何activity ID?

2 个答案:

答案 0 :(得分:1)

ID必须是唯一的。您可以根据name来定位它们:

$('.activity_form [name="activity[projectuser_id]"]').change(function() { //or $('.activity_form select')
  console.log("yes!");
});

答案 1 :(得分:0)

尝试此选择器

$('[name^="activity"]').change(function() { ... });

这将假设您的名字以activity开头。对于包含活动,您还可以使用通配符*代替^