JQuery选择器返回undefined

时间:2017-07-05 22:55:00

标签: javascript jquery html

这个html代码是由我的php代码生成的,但我将其复制出浏览器的HTML代码。

console.log打印出undefined。我不知道为什么。像往常一样,这可能是一个非常愚蠢的错误。谢谢你的帮助。

$('.show').click(function() {
  var id = $(this).attr('id');
  var div = $("div#" + id);
  console.log(div.html());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Heading <a href='#' class='show' id='2962'>+</a></h3>
<div class='.slidetoggle' id='2962' style='display: none;'>
  <p>Test!</p>
</div>

2 个答案:

答案 0 :(得分:5)

这是因为.show元素是a,而不是div。选择器错误:

var div = $("a#" + id);

更新

  

你是对的,但我想展示div,而不是a

在这种情况下,您需要使用DOM遍历来查找相关元素。您当前的代码不起作用,因为您有重复的id属性。这是无效的,因为它们必须是唯一的。试试这个:

&#13;
&#13;
$('.show').click(function() {
  $(this).closest('h3').next('.slidetoggle').slideToggle();
});
&#13;
.slidetoggle { display: none; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Heading <a href="#" class="show">+</a></h3>
<div class="slidetoggle">
  <p>Test!</p>
</div>

<h3>Another Heading <a href="#" class="show">+</a></h3>
<div class="slidetoggle">
  <p>Another Test!</p>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我还没有发表评论的声誉所以我必须将其作为答案,但你想要的元素是一个nchor,但你的jQuery选择器是针对一个元素。