jQuery $.загрузка Не выполняется

#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 идентификатор отсутствует ни в одном из сообщений, но содержимое присутствует. На фактической странице идентификатор присутствует для всех сообщений, а содержимое отсутствует в элементах, где была нажата кнопка,