javascript - 为什么 JQuery 不附加 'finding' div?

标签 javascript ajax

我有一个函数,当使用以下代码段单击按钮时,它会将一些 HTML 附加到表单中的某个部分:

function add_series() {
    $(document).on("click", "a.add-another-series", function(e) {
        e.preventDefault();

        // Get the containing div that we will append the retrieved HTML to
        $container = $(this).parent().parent().parent().parent();

        // Get the HTML via ajax and append it to the containing div
        $.get('ajax/add-series/' + study_number + '/' + series_number, function(data){
            $container.append(data);
        });
     });
}

这是通过 AJAX 返回到调用函数的(简化的)HTML 结构(大写字母表示此文本是一个变量):

<div class="series" data-study-number="STUDY_NUMBER" data-series-number="SERIES_NUMBER">        
    <h4>series SERIES_NUMBER</h4>

    <div class="row">
        <div id="RANDOM_ID" class="small-12 columns large-centered uploader">&nbsp;</div>
    </div>                          
</div>

这工作正常并按预期显示在页面上。

我需要做的是从第一个函数(本问题开头的“点击”函数)中获取 id=RANDOM_ID 的 div。为了进行测试,我尝试使用以下选择器获取所有 .series div:

$series_divs = $('.study[data-study-number="' + STUDY_NUMBER + '"]').find('.content').find('.series');

这似乎只返回 .append() 调用之前存在的 .series div。它不会返回我刚刚附加的那个。我在这里做错了什么吗?

最佳答案

尝试这样的事情:

$(document).on("click", "a.add-another-series", function(e) {
    var $container = $(this).parent().parent().parent().parent();

    e.preventDefault();

    $.get('ajax/add-series/' + study_number + '/' + series_number)
    .then(function(data){
        var $data = $(data),
            id = $data.find(".row div").attr("id");

        $container.append($data);

        // Now something with id. Maybe call a function with it?
    });
});

注释

  • 函数 add_series() 的用途是什么?包含事件处理程序的函数没有太多用处,因此我将其删除。
  • 您忘记var您的变量。
  • 尝试使用 .closest(),而不是 .parent().parent().parent().parent()
  • 您无需链接 .find() 调用。 .find('.content').find('.series') 相当于 find('.content .series')
  • study_numberseries_number 来自哪里?

关于javascript - 为什么 JQuery 不附加 'finding' div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16495847/

相关文章:

php - Ajax 片段元标记 - Googlebot 未读取页面内容

javascript - 遍历递归json树并合并

javascript - 使用javascript从python CGI返回图像

javascript - HTML 5 视频播放无法在 iPhone(Chrome 和 Safari)上运行

javascript - 是否可以在 Typescript 中创建一个变量,只要它遵循某种格式,它可以是任何值?

javascript - MySQL 使用 Ajax 返回表名而不是值

asp.net - 在 ASP.NET Azure 托管网站和 Web 角色之间发出 AJAX 请求?

javascript - 如何在一段时间后自动隐藏消息 "You have been subscribed to our newsletter "?

javascript - 使用 AJAX PHP 显示数据

javascript - 如何在 onCall() 函数中抛出 HttpsError 并在 Android 客户端上捕获