Javascript 使用动态ID更改select上的事件处理程序
我有一个页面,上面有几个选择,如下所示:Javascript 使用动态ID更改select上的事件处理程序,javascript,jquery,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="
<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>
如何更改事件处理程序,使其在任何活动id上工作?请尝试此选择器
$('[name^="activity"]').change(function() { ... });
这将假定您的名字以活动
开头。您还可以使用通配符*
而不是^
来表示包含活动。ID必须是唯一的。您可以根据他们的名称来确定他们的目标:
$('.activity_form [name="activity[projectuser_id]"]').change(function() { //or $('.activity_form select')
console.log("yes!");
});
“我有一个页面,上面有几个选项,如下所示:”然后你有一个无效页面。您不能在多个元素上使用相同的id
(activity\u projectuser\u id
)。我同意,我也会这样做,但接受的答案完美地回答了我关于如何处理动态选择的要求JHOHN-如果您想这样匹配所有元素,效果会更好,因为除了工作,它不鼓励保留无效的id
值。(在我的回答中,我认为您想要一个基于活动ID的特定答案,但如果您想要所有答案,Milind's会给出正确的答案。)同意并更新已接受的答案。谢谢甚至只是$('[name=“activity[projectuser\u id]”])…
我切换到name,是否要删除你的否决票?我原本以为他在selects上有ID,但它在parent div上。所以这实际上是Milind的答案,现在您已经编辑了它,除了它匹配任何名称以activity
开头的内容,而不是OP说他/她想要的元素。
$('.activity_form [name="activity[projectuser_id]"]').change(function() { //or $('.activity_form select')
console.log("yes!");
});