查找 parent div ID,然后查找 div 的 child 的所有数据

Finding parent div ID then all data of that div's child

我正在尝试做一些事情,我点击 div 的标题,然后弹出一个包含 div 信息的模式。 div 附加在 jquery 中。所以现在我想当我点击 link 它给我 parent Div 和 class forumItem 的 ID,然后 returns 我确定该 forumItem 中 div 的信息。我试过最接近的方法,但这总是 returns undefined

追加div

$(".mainForum").append('<div class="col-md-12 forumItem" id="' + obj.workout_id + '"> <div class="col-md-2 col-xs-2 person"> <img  class="personIcon" src="./resources/images/personIcon.png"></div> <div class="col-md-6 col-xs-6">  <span class="titel noWrap"> <button class="titleButton" onclick="loadModal()"> ' + obj.titel + ' </button> </span> <span class="beschrijving noWrap"> ' + obj.beschrijving + '</span> </div> <div class="col-md-2 col-xs-2"> <span class="categorie">' + obj.categorie + '</span> </div> <div class="col-md-2 col-xs-2"> <span class="categorie">' + obj.persoon + '</span> </div></div>');

我试过像这样获取 parent div 的 ID,但是这个 returns 未定义

function loadModal(){
    var divid = $(this).closest(".forumItem").attr("id");
    console.log(divid);
}

您需要将当前点击的元素作为参数传递:

$(".mainForum").append('<div class="col-md-12 forumItem" id="' + obj.workout_id + '"> <div class="col-md-2 col-xs-2 person"> <img  class="personIcon" src="./resources/images/personIcon.png"></div> <div class="col-md-6 col-xs-6">  <span class="titel noWrap"> <button class="titleButton" onclick="loadModal(this)"> ' + obj.titel + ' </button> </span> <span class="beschrijving noWrap"> ' + obj.beschrijving + '</span> </div> <div class="col-md-2 col-xs-2"> <span class="categorie">' + obj.categorie + '</span> </div> <div class="col-md-2 col-xs-2"> <span class="categorie">' + obj.persoon + '</span> </div></div>');

然后,将传入的参数作为绑定对象:

function loadModal(clicked){
    var divid = $(clicked).closest(".forumItem").attr("id");
    console.log(divid);
}

在函数内部的代码 $(this) 中,指向函数对象本身而不是单击的元素。

最好的方法是添加一个事件委托,监听每个单击的按钮,而不用 JavaScript 事件污染 dom。首先从创建的元素中删除 onclick

$(".mainForum").append('<div class="col-md-12 forumItem" id="' + obj.workout_id + '"> <div class="col-md-2 col-xs-2 person"> <img  class="personIcon" src="./resources/images/personIcon.png"></div> <div class="col-md-6 col-xs-6">  <span class="titel noWrap"> <button class="titleButton"> ' + obj.titel + ' </button> </span> <span class="beschrijving noWrap"> ' + obj.beschrijving + '</span> </div> <div class="col-md-2 col-xs-2"> <span class="categorie">' + obj.categorie + '</span> </div> <div class="col-md-2 col-xs-2"> <span class="categorie">' + obj.persoon + '</span> </div></div>');

然后创建事件委托侦听器,挂接到主容器 (.mainForm):

$('.mainForum').on('click', '.titleButton', function() {
    var divid = $(this).closest(".forumItem").attr("id");
    console.log(divid);
});

$(".mainForum").append('<div class="forumItem" id="test"><button class="titleButton"> click me</button></div>');

$('.mainForum').on('click', '.titleButton', function() {
  var divid = $(this).closest(".forumItem").attr("id");
  console.log(divid);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mainForum">

</div>

希望对您有所帮助。