变量dos'设置不正确

Variable doesn't get set properly

本文关键字:设置 不正确 dos 变量      更新时间:2024-03-07

当用户单击索引页面上的删除按钮时。模态弹出,使用第一个函数,URL路径被传递到模态中删除按钮的taskdestroylink属性。到目前为止一切都很好。每次我点击链接,属性都会被正确设置。

第二个功能是向服务器发送AJAX请求。在页面重载中,第一个请求运行良好,但第二个请求保持第一个请求的路由。所以var href第一次被正确设置,但如果我试图删除另一个任务,href值仍然属于第一个。这很奇怪,因为正如我提到的,taskdestroylink属性显示了DOM中的新值。

那么var href = $(this).data("taskdestroylink");有什么问题呢?为什么它不设置新的值?

点击此链接打开模式获取:

<li>
  <a href="#" data-toggle="modal" role="button" data-target="#delete-task-modal" class="open-delete-task-modal" data-taskdeletelink="<%= user_task_path(current_user, task) %>">Delete Task</a>
</li>

模式:

<div class="modal-footer">
  <button type="button" class="btn btn-default" data-dismiss="modal" id="deletetaskclose">Close</button>
  <a href="#" id="delete-task-link" type="button" class="btn btn-danger" data-taskdestroylink >Delete Task</a> 
</div>

JS:

$(document).on('click', '.open-delete-task-modal', function (event) {
  var taskDeleteLink = $(this).data("taskdeletelink");
  $('#delete-task-link').attr("data-taskdestroylink", taskDeleteLink);
});
$(document).on('click', '#delete-task-link', function (event) {
  var href = $(this).data("taskdestroylink");
  alert(href);
  $.ajax({
    type: "DELETE",
    url: href,
    dataType: "script"
  });
});

混合data()attr()是个坏主意,所以选择一个并坚持使用。

更改

.attr("data-taskdestroylink", taskDeleteLink);

.data("taskdestroylink", taskDeleteLink);

data()使用自己的内部存储,而不是实际的属性。