【问题标题】:jQuery $.load Not ExecutingjQuery $.load 未执行
【发布时间】:2021-11-01 02:26:00
【问题描述】:

我目前在我的 Django 网站上使用 jQuery 在用户单击按钮后重新加载 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);
            }
        })
    })
});

从控制台我可以看到 currentParentElementid 指向要重新加载的正确 div,但 $(id).load() 似乎没有做任何事情。

在下面链接的图片中,单击箭头按钮应该会使绿色或红色数字发生变化。单击箭头时数字不会改变,但是当我重新加载整个页面时它会改变。
https://i.stack.imgur.com/T26wn.png

【问题讨论】:

    标签: javascript jquery django django-templates


    【解决方案1】:

    您的 ID 选择器缺少 # 符号。例如,假设这个目标元素的id"myID"

    var id = $(currentParentElement).attr('id');
    

    那么你使用的 jQuery 选择器是:

    $('myID')
    

    正在寻找<myID> 元素。没有,所以找不到匹配项,所以没有什么可以调用.load()

    您可以将符号添加到您的选择器:

    $('#' + id).load(document.URL + ' #' + id);
    

    (注意:出于同样的原因,在传递给load() 的选择器中也进行了相同的更正。)

    【讨论】:

    • 我已经进行了编辑,现在 div 正在重新加载,但现在它的所有内容在触发时都会消失。有什么想法吗?
    • @Duncan:您可能想要打开浏览器的调试工具并检查 AJAX 请求中来自服务器的响应。查看它包含什么以及其中的哪些元素具有该 ID。
    • 我在调试工具中找不到任何东西,表明该功能出了问题。点击按钮后,页面留下<li class="post_container" id="post0"></li>,里面没有内容。我是否需要将内容添加到 $.load 函数才能包含它们?
    • @Duncan:调试时,id 的确切运行时值是多少?在服务器的响应中,是否有带有 id 的元素?该元素包含什么?
    • 列表中第一个帖子的 id 是 post0,这是正确的。然而,在 AJAX 响应中,id 不存在于任何帖子上,但存在内容。在实际页面中,所有帖子的 id 都存在,并且按下按钮的项目中缺少内容,
    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多