首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从button_tag调用javascript函数?

问从button_tag调用javascript函数?
EN

Stack Overflow用户
提问于 2016-03-02 12:43:35
回答 2查看 185关注 0票数 1

我有下一个带有jquery函数的文件:

资产/ javascripts/poll_items.js

代码语言:javascript
复制
$(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

代码语言:javascript
复制
%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 @owner

poll_fields.html.haml

代码语言:javascript
复制
%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

代码语言:javascript
复制
.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' } 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-02 13:59:31

解决方案:

我添加了application.js.coffee #=require poll_items.js,一切都正常。

票数 0
EN

Stack Overflow用户

发布于 2016-03-02 12:51:10

我怀疑DOM正在动态构建,因此尝试按以下方式更改JS代码:

代码语言:javascript
复制
$(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中可能存在该元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35747577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档