我有下一个带有jquery函数的文件:
资产/ javascripts/poll_items.js
$(document).ready(function(){
$('.up_id').on('click', function() {
$(this).closest('.poll_row').insertAfter($(this).closest('.poll_row').next());
});
$('.down_id').on('click', function() {
$(this).closest('.poll_row').insertBefore($(this).closest('.poll_row').prev());
});
});当我单击‘= button_tag’up‘时,键入:’按钮‘,值:'up',input_html:{class:'up_id'}'’,什么都不会发生。如何纠正文件javascript中的调用代码?
完整代码:
polls/new.html.haml
%h1= title "Новый опрос"
= simple_form_for @poll do |f|
= f.error_messages header_message: nil
= f.input :question, disabled: !@poll.editable?(current_user), input_html: { class: 'input-block-level' }
= f.input :results_hidden, as: :boolean, inline_label: 'Скрыть результаты до окончания опроса', label: false
= f.input :from_date, as: :datetime, input_html: { class: 'poll_date' }
= f.input :to_date, as: :datetime, input_html: { class: 'poll_date' }
%h3#poll-items Варианты ответа (не больше пяти)
.item_index
= f.simple_fields_for :poll_items do |poll|
= render 'poll_item_fields', f: poll
= link_to_add_association 'Добавить еще вариант', f, :poll_items
.form-actions
= f.button :submit, 'Опубликовать опрос', class: 'btn-bg'
%p
Вернуться к посту:
= link_to @ownerpoll_fields.html.haml
%h3#poll-items Варианты ответа (не больше пяти)
.item_index
= f.fields_for :poll_items do |poll|
= render "poll_item_fields", f: poll
.links
= link_to_add_association 'Добавить еще вариант', f, :poll_items, render_options: {class: 'links'}poll_item_fields.html.haml
.poll_row
.poll_item
= f.input :answer, input_html: { class: 'ctrlenter expanding' }, label: false, placeholder: 'Введите вариант ответа'
= button_tag 'up', type: 'button', class: 'up_id', value: 'up'
= button_tag 'down', type: 'button', class: 'down_id', value: 'down'
= link_to_remove_association "удалить", f, { wrapper_class: 'poll_item' } 发布于 2016-03-02 13:59:31
解决方案:
我添加了application.js.coffee #=require poll_items.js,一切都正常。
发布于 2016-03-02 12:51:10
我怀疑DOM正在动态构建,因此尝试按以下方式更改JS代码:
$(document).ready(function(){
$(document).on('click', '.up_id', function() {
$(this).closest('.poll_row').insertAfter($(this).closest('.poll_row').next());
});
$(document).on('click','.down_id', function() {
$(this).closest('.poll_row').insertBefore($(this).closest('.poll_row').prev());
});
});在这里,我们使用事件委托技术将click事件传播到所需的DOM元素,DOM中可能存在该元素。
https://stackoverflow.com/questions/35747577
复制相似问题