2016-04-07 24 views
1

Bir kullanıcı dizin sayfasındaki sil düğmesini tıkladığında. Modal açılır ve ilk işlevle URL yolu, moddaki silme düğmesinin taskdestroylink özniteliğine geçirilir. Şimdiye kadar her şey iyi çalışıyor. Bağlantıyı her tıkladığımda, özellik düzgün bir şekilde ayarlanıyor.Değişken düzgün ayarlanmadı

İkinci işlev, AJAX isteğini sunucuya gönderiyor. Sayfada, ilk istek iyi çalışır, ancak ikincisi, ilk olanın yolunu tutar. Yani var href ilk kez düzgün ayarlandı, ancak başka bir görevi silmeye çalışırsam, href değeri hala birinciye aittir. taskdestroylink özniteliğinin DOM'deki yeni değeri gösterdiğinden beri garip.

var href = $(this).data("taskdestroylink"); ile ilgili sorun nedir? Neden yeni değeri ayarlamıyor?

<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> 

Modal:

<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

neden veri() ve attr() karıştırıyorsunuz? – epascarello

+0

tam olarak ne demek istiyorsun? –

+0

Okuma için data() kullanıyorsunuz ve attr() yazıyor – epascarello

cevap

2

O data() ve attr() yüzden seçeceğiz karıştırmak için kötü bir fikir

Modal en bu bağlantıyı tıklayarak açılan olsun ve onunla sopa.

Değişim

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

için
.data("taskdestroylink", taskDeleteLink); 

data() kendi iç depolama ve değil gerçek niteliklerini kullanır.

İlgili konular