您可能知道,Rails 3 强烈鼓励 UJS(不显眼的 JavaScript),这基本上意味着 JavaScript 承担了繁重的工作,并且您不应该将客户端交互性与表单生成器联系起来。我建议在这里做一些非常相似的事情——仅仅因为你动态地添加元素并不意味着你不能使用 jQuery 来观察它们的变化。
在您的模板中:
<%= f.select :question_select, Question.all, {prompt: "New Question"}, data: { question: true } %>
这将创建如下内容:
<select id="..." data-question="true">
...
</select>
然后,在 JavaScript 中,您可以使用事件委托来监视在整个文档中设置的change
任何元素上的事件:data-question
$(function() {
$(document).on('change', '[data-question]', function() {
// this == the element that fired the change event
alert('Changed question');
});
});
注意:data-question
您可以简单地向元素添加一个类,而不是使用 ,然后修改您的 jQuery 以使用该类:
$(function() {
$(document).on('change', '.question', function() {
// this == the element that fired the change event
alert('Changed question');
});
});
I generally try to minimize the use of CSS selectors in my JavaScript so that designers are free to change them to whatever they want without breaking things, but it works just as well.