如果应用于class属性,jquery nearest返回undefined

时间:2017-01-28 06:41:00

标签: javascript jquery

在运行以下jquery代码时,我在警告框中不断得到“未定义”。如果我用id =“back”替换class =“back”并在jquery代码中反映相同,它可以正常工作。但我的情况是,最接近的需要是上课而不是身份证。如何解决这个问题?

HTML:

<div id="up">
  <div id="boom">
  <div class="back">  </div>
  </div>
</div>

JQUERY:

$(document).ready(function(){
  alert($(".back").closest("div").attr("id"));
});

4 个答案:

答案 0 :(得分:3)

.closest从当前节点开始。但是此节点没有id属性。 您需要更改.closest中的选择器,如下所示:

$(document).ready(function(){
  alert($('.back').closest('div[id]').attr('id'));
});

现在,您正在搜索div作为属性的id

答案 1 :(得分:0)

那是因为你的

<div class="back">

没有id属性,所以它将是未定义的,请查看

.attr("class")

它将返回班级名称

答案 2 :(得分:0)

您也可以使用此

$(document).ready(function(){
 alert($(".back").parents("div").attr("id"));
});

答案 3 :(得分:0)

来自当前节点的

closest()方法检查,因此如果要查找class = "back"的第一个anchester(父)div标签,那么它不应该是div标签,因此您需要更改div标签到span或其他标签

$(document).ready(function() {
  console.log($(".back").closest("div").attr('id'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="up">
  <div id="boom">
    <span class="back">  </span>
  </div>
</div>