javascript - 单击父项时获取子项数据

标签 javascript jquery json

我目前有 4 个单独的 div,它们都包含不同的文本。此刻我可以检索通过 jQuery 单击了哪个框,但是我希望能够返回其中的文本(标题、地址、距离)。

谁能帮我解决这个问题?

此外,如果有人可以帮助我从 JS 对象或 JSON 中获取这些数据而不是硬编码,那将是一个更好的帮助(抱歉,我对它的工作原理有点不熟悉)

提前致谢!

$(document).ready(function() {

  //Currently gets the box ID 
  $(".address-box").click(function() {
    alert("You are clicking " + $(this).attr('id'));
  });


});
.address-box {
  border: 1px solid black;
}

.address-box-number {
  width: 20px;
  height: 20px;
  background-color: black;
  color: white;
  text-align: center;
  padding: 5px;
  margin: 10px 0px 0px 10px;
}

.address-data {
  margin-left: 15%;
}

.address {
  font-size: 17px;
  &__name {
    p {
      font-weight: 600;
    }
  }
  &__location {
    font-weight: 500;
  }
}

.address-distance {
  font-size: 15px;
  color: darkgray;
}
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<div class="Square1 address-box" id="box-1">
  <div class="address-box-number">1</div>
  <div class="address-data">
    <div class="address address__name">
      <span id="box-1-title">some text</span>
    </div>
    <div class="address address__location">
      <span id="box-1-title">more text</span>
    </div>
    <div class="address-distance">
      <p>000 miles away (00 hour, 00min)</p>
    </div>
  </div>
</div>
<div class="Square2 address-box" id="box-2">
  <div class="address-box-number">2</div>
  <div class="address-data">
    <div class="address address__name">
      <p>CARL ROSNER MOTORCYCLES</p>
    </div>
    <div class="address address__location">
      <p>249 London Road, Romford, Essex, RM7 9NB</p>
    </div>
    <div class="address-distance">
      <p>000 miles away (00 hour, 00min)</p>
    </div>
  </div>
</div>
<div class="Square3 address-box" id="box-3">
  <div class="address-box-number">3</div>
  <div class="address-data">
    <div class="address address__name">
      <p>JACK LILLEY ROMFORD</p>
    </div>
    <div class="address address__location">
      <p>59 - 61 Albert Embankment, Vauxhall, London UK, SE1 7TP</p>
    </div>
    <div class="address-distance">
      <p>000 miles away (00 hour, 00min)</p>
    </div>
  </div>
</div>
<div class="Square4 address-box" id="box-4">
  <div class="address-box-number">4</div>
  <div class="address-data">
    <div class="address address__name">
      <p>JACK LILLEY ASHFORD</p>
    </div>
    <div class="address address__location">
      <p>249 London Road, Romford, Essex, RM7 9NB</p>
    </div>
    <div class="address-distance">
      <p>000 miles away (00 hour, 00min)</p>
    </div>
  </div>
</div>

What i currently have on my page

最佳答案

你几乎拥有它。无需获取 ID,只需使用 childrentext 方法即可。我将创建一个对象变量并用每个 div 中数据的不同部分填充它:

$(document).ready(function() {

  $(".address-box").click(function() {
    var box = {};

    // get all the nested children
    var children = $(this).children('.address-data').children()

    // iterate through each and make an associative array with the text
    $.each(children, function(value) {
        var className = $(this).attr('class');
        box[className] = $(this).text();
    });

    // do whatever you want with the box data
    console.log(box);
  });


});

编辑:更新为遍历子对象并填充对象

https://jsfiddle.net/bd0dd3jt/14/

关于javascript - 单击父项时获取子项数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48793197/

相关文章:

javascript - 我无法足够快地将项目插入 jasvacript 数组

javascript - 计算 <ul> 中特定 <li> 左侧和右侧 <li> 的数量

python - 如何为 graphql 查询配置 JSON?

java - 如何更改java中Gson创建的json结构

一旦我添加标签,jQuery select2 就会中断

javascript - 无法使用 'in' 运算符在...中搜索 'length' 需要更改字符串吗?

javascript - 当响应包含 JSON 数据和文本时访问 JSON 数据

javascript - 数组的一个元素没有通过测试

java - 如何在 struts 文本字段标签中放置占位符?

ajax - JQuery Ajax 请求