2016-04-07 107 views
1

當用戶單擊索引頁上的刪除按鈕時。模式彈出,第一個函數將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" 
    }); 
}); 
+0

你爲什麼要混合data()和attr()? – epascarello

+0

你是什麼意思? –

+0

您正在使用data()讀取並寫入attr() – epascarello

回答

2

這是一個壞主意,混合data()attr()所以挑一個

模態獲得的點擊此鏈接打開並堅持下去。

變化

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

.data("taskdestroylink", taskDeleteLink); 

data()使用其自己的內部存儲,而不是實際的屬性。