javascript - 将其绑定(bind)为我在 ajax 成功回调中单击的复选框

标签 javascript jquery

这是我的代码(请原谅 html.erb 中的脚本标记):

<div class="lists">
  <h1>Your Todo Lists</h1>
    <% @lists.each do |list| %>
      <div id="list">
        <%= list.title %>
        <% list.items.each do |item| %>
        <div class="item-list">
          <%= form_for :item, url: item_path(item), method: :post, html: { class: "item-box" } do |f|%>
            <%= f.label item.title %>
            <%= f.check_box item.id %>
          <% end %>
        </div>
        <% end %>
      </div>
    <% end %>
</div>

<script>
  $(document).ready(function() {

    var changeDom = function(itemRow) {
      itemRow.closest(".item-list").remove()
      // $("complete-list").append(this)
    }

    var itemList = $(".item-list")
    itemList.find(":checkbox").on("change", function(box){
      var box = $(this)
      var item_number = parseInt(box[0].name.match(/[^[\]]+(?=])/g)[0])
      $.ajax( { type: "PUT",
          url: "items/" + item_number,
          data: { id: item_number },
          success: function(text) {
            debugger;
            changeDom(this.closest(".item-list"))
          }
        });
      })
    })
</script>

在我的成功回调中,我有调试器...这似乎是 ajax 对象(它有一个 url 路径和数据),但我希望“this”成为我单击的复选框。我该怎么办?我在我认为应该的地方尝试了bind(this)...但似乎没有任何效果。基本上,我试图从 DOM 中删除复选框的行并将其附加到 DOM 上的其他位置。

最佳答案

改变

this.closest(".item-list")

box.closest(".item-list")

关于javascript - 将其绑定(bind)为我在 ajax 成功回调中单击的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043466/

相关文章:

JavaScript 在 Brackets 代码编辑器中很奇怪

javascript - 如何将数据传递到 sails 和 node.js 中的 ejs 文件?

java - 如何通过软件浏览网站?

javascript - 如何测试对象是否存在于 Javascript 数组中?

javascript - 获取错误 "ReferenceError: event is not defined"

javascript - React Redux : Can view props in browser console, 但渲染时返回未定义

javascript unshift 参数返回意外结果

javascript - [codeplayer]当 iframe 内容是使用 javascript 从文本区域动态加载时,如何在 iframe 中查找元素

javascript - 如何获取 jquery datepicker 的所有选项以使用相同的选项实例化新的 datepicker?

javascript - 如何在angularjs中将数据从列表框添加到列表框