У меня есть неупорядоченный список сообщений, где каждое сообщение в элементе списка можно щелкнуть.
<ul id="home-message-list" class="messages">
<li>
<a href="#">
<span class="linkClick" name="message"><a href="#">Hi, How are you?</a></span>
</a>
</li>
<li>
<a href="#">
<span class="linkClick" name="message"><a href="#">Hi, How are you?</a></span>
</a>
</li>
</ul>
Каждый <span class="linkClick"><a href="#">Hi, How are you?</a></span>
раз, когда нажимается, я обрабатываю его с помощью ajax-класса на основе .linkClick
и открываю всплывающее окно bootstrap modal. Причина, по которой я делаю это таким образом, заключается в том, чтобы иметь возможность динамически заполнять содержание модального.
$('.linkClick').click(function(){
$.get( "/loadModal")
.done(function(data) {
$('#message-model-content').html(data);
$('#messageModal').modal('show');
});
});
Я хочу обновить сообщение в соответствующем элементе списка, из которого modal был открыт после ответа с сервера.
Я могу обрабатывать ответ из модального всплывающего окна, но не уверен, как обновить правильный элемент списка. Я пробовал это, но это не работает.
$(document).on("click", "#btn_sendMessageReply", function(){
$.getJSON('/sendReply', {
}, function(data) {
$('#messageModal').modal('hide');
$(this).closest("li").find("span[name='message']").text(data);
});
});
Я пробовал это$("span[name='message']").text(data);
, но он обновил оба списка
Как я могу обновить правильный элемент списка, из которого был открыт modal pop up ?
Вы можете потерять контекст для
$(this)
до завершения запроса AJAX. Попробуйте использовать временную переменную для сохранения контекста.Ваш код:
Изменить на:
Редактировать обсуждение в комментариях ниже:
Вот еще один способ сохранить ссылку на текущую соответствующую строку, добавив к ней класс.