获取span的特定id

oxiaedzo  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(390)

所以我需要得到span的id,其中是checkbox的输入。。所以,如果选中复选框,我需要获取span的特定id,复选框在哪里。
我的代码
html:

<div id="APs">
    <span id="59" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 59]</b> - something<br></span>
    <span id="60" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 60]</b> - something<br></span>
    <span id="275" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 275]</b> - something<br></span>
    <span id="2903" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 2903]</b> - something<br></span>
    <span id="3417" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 3417]</b> - something<br></span>
</div>

jquery:

$(document).on("change", ":checkbox", function () {
   if ($(this).is(":checked")) 
   {
      const apid = $("#APs span").attr("id");
      console.log(apid);

      //another lines of code

   }
}

这段代码只选择第一个跨度,即使我点击第二个复选框,它仍然会记录id 59。
我需要获取那个id,因为我从json获取数据,url上有什么,但我需要那个id来获取正确的数据。

ie3xauqp

ie3xauqp1#

问题在于您选择了“全部” #APs span 元素,而不是与所选复选框相关的元素。当您调用jquery的 attr() 方法,它将仅从第一个元素读取属性。
要更改此行为,请使用 this 关键字以及 closest() 获取父对象的选择器 span 引发 change 事件

$(document).on("change", ":checkbox", function() {
  let $cb = $(this);
  if ($cb.is(":checked")) {
    const apid = $cb.closest('span').prop("id");
    console.log(apid);
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="APs">
  <span id="59" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 59]</b> - something<br></span>
  <span id="60" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 60]</b> - something<br></span>
  <span id="275" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 275]</b> - something<br></span>
  <span id="2903" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 2903]</b> - something<br></span>
  <span id="3417" name="4"><input type="checkbox"> <b>[Site: 4 | ID: 3417]</b> - something<br></span>
</div>

相关问题