如何在每次接下来的函数后调用javascript函数?

时间:2015-08-03 14:57:49

标签: javascript jquery ruby-on-rails

我有两个表,当我点击相应的复选框时,我会在它们之间移动特定的行。 除了复选框,由于x-editable库,每行包含内联编辑字段。

问题是,当我将某行移到另一个表格中时,我无法再编辑其字段。似乎setXeditable()只运行一次,然后在调用另一个java脚本后它不会被执行。我必须重新加载页面才能再次编辑这些字段。我该如何解决?

的application.js

220.3

我在 index.js

中调用setXeditable()
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require bootstrap3-editable/bootstrap-editable
//= require bootstrap-datepicker/core
//= require bootstrap-datepicker
//= require_tree .

#x-editable

var setXeditable;

$.fn.editable.defaults.mode = 'inline';

setXeditable = function() {
  return $("[data-xeditable=true]").each(function() {
    return $(this).editable({
      ajaxOptions: {
        type: "PUT",
        dataType: "json"
      },
      params: function(params) {
        var railsParams;
        railsParams = {};
        railsParams[$(this).data("model")] = {};
        railsParams[$(this).data("model")][params.name] = params.value;
        return railsParams;
      }
    });
  });
};

#function that moves rows

function pressing(arg){
      user_id = $(arg).attr('data-user-id')
      id = $(arg).attr('data-id')
      value = $(arg).is(":checked")
      $(arg).attr('data-id')
      html=$(arg).closest("tr")
      $(arg).closest("tr").remove()
      path = '/users/' + user_id + '/tasks/' + id

       if(value){
         complete = true;
         $('.completed-tasks').append(html)
       }
       else{
         complete = false;
          $('.incompleted-tasks').append(html)
        }

      $.ajax({
        url : path,
        type : 'PUT',
        dataType: "json",
        data: { task: {id: id, complete: value}}
      })
    }

1 个答案:

答案 0 :(得分:2)

为什么不能从移动行功能中添加对setXeditable()的调用?

function pressing(arg){
      user_id = $(arg).attr('data-user-id')
      id = $(arg).attr('data-id')
      value = $(arg).is(":checked")
      $(arg).attr('data-id')
      html=$(arg).closest("tr")
      $(arg).closest("tr").remove()
      path = '/users/' + user_id + '/tasks/' + id

       if(value){
         complete = true;
         $('.completed-tasks').append(html)
       }
       else{
         complete = false;
          $('.incompleted-tasks').append(html)
        }

        setXeditable();

      $.ajax({
        url : path,
        type : 'PUT',
        dataType: "json",
        data: { task: {id: id, complete: value}}
      })
    }