#javascript #jquery #django #django-templates
Вопрос:
В настоящее время я использую jQuery на своем сайте Django для перезагрузки div, как только пользователь нажимает кнопку.
$(document).ready(function(){
var post_list = Array.from(document.getElementsByClassName("post_container"))
for(var post in post_list){
post_list[post].id = 'post' post;
}
var $arrows = $(".arrow");
$arrows.each(function(index){
var data = $(this).data();
var element = $(this);
element.on('click', function(event){
if(user_auth){
var currentParentElement = element.parent().parent().parent().get(0);
var id = $(currentParentElement).attr('id');
$(id).load(document.URL ' ' id);
}
})
})
});
С консоли я вижу это currentParentElement
и id
указываю на правильный div для перезагрузки, но $(id).load()
, похоже, ничего не делаю.
На изображении, приведенном ниже, нажатие кнопок со стрелками должно привести к изменению зеленого или красного числа. Число не меняется при нажатии на стрелку, но оно меняется, когда я перезагружаю всю страницу.
https://i.stack.imgur.com/T26wn.png
Ответ №1:
В вашем селекторе идентификаторов отсутствует #
символ. Например, предположим id
, что этот целевой элемент является "myID"
:
var id = $(currentParentElement).attr('id');
Тогда селектор jQuery, который вы используете,:
$('myID')
Который ищет <myID>
элемент. Его нет, так что совпадений не найдено, так что звонить не .load()
к чему.
Вы можете добавить символ в свой селектор:
$('#' id).load(document.URL ' #' id);
(Примечание: Та же поправка была также внесена в селектор, переданный load()
по той же причине.)
Комментарии:
1. Я внес это изменение, и теперь div перезагружается, но теперь все его содержимое исчезает при его запуске. Есть какие-нибудь идеи?
2. @Duncan: Вы, вероятно, захотите открыть средства отладки вашего браузера и проверить ответ сервера в запросе AJAX. Посмотрите, что он содержит и какой элемент в нем имеет этот идентификатор.
3. Я не могу найти в инструментах отладки ничего, указывающего на то, что с функцией что-то пошло не так. После нажатия кнопки страница остается
<li class="post_container" id="post0"></li>
без содержимого внутри. Нужно ли мне добавлять содержимое в функцию $.load, чтобы они были включены?4. @Duncan: Когда вы отлаживаете, каково точное значение времени выполнения
id
? В ответе сервера есть ли соответствующий элементid
? Что содержит этот элемент?5. Идентификатор был
post0
для первой записи в списке, что правильно. Однако в ответе AJAX идентификатор отсутствует ни в одном из сообщений, но содержимое присутствует. На фактической странице идентификатор присутствует для всех сообщений, а содержимое отсутствует в элементах, где была нажата кнопка,