1

我有以下代码:

<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8"/>
<script type = "text/javascript" src = "js/jquery.js" ></script>
</head>
<body>
<div id = 'div'>
    <div id = "1">

    </div>     
    <div id = "2">

    </div>  
</div>         
</body>
</html>

我的 JavaScript 代码是:

$(document).ready(function(){
    var lastcommentq   = document.getElementById('div').lastChild.id;
    alert(lastcommentq);
});

它应该用 id 'div' 的 '2' 提醒 div 的 lastchild 的 id,但我收到的警报是“未定义”。我不知道我做错了什么。请帮我。

4

6 回答 6

8

您的元素周围可能有文本节点,因此外部的最后一个子节点<div>不一定具有“id”属性。

我不确定是否所有浏览器都支持它,但是有一个“lastElementChild”属性明确地只获取元素,而不是评论节点或文本节点之类的东西。如果做不到这一点,您可以遍历节点列表以查找类型 1 节点。

于 2013-08-20T18:01:28.063 回答
0

这是你想要的行为吗?

$(document).ready(function(){
     var lastchild   = $("div").last().attr("id")
     alert(lastchild);
     });


<div id="div">
    <div id ="1">

    </div>     
    <div id="2">

    </div>  
</div>        

看看这个小提琴的例子

http://jsfiddle.net/sHgbF/

于 2013-08-20T18:03:26.473 回答
0

我会使用这种方法,因为 ID 是属性而不是属性。

$(function () {
    var lastchild = $('#div div:last-child').prop('id');
    alert(lastchild);
});
于 2013-08-20T18:08:22.547 回答
0

jQuery方式:

// assuming the last child is always a div
var lastcommentq = $('#div > div:last-child').attr('id');

// alternatively
var lastcommentq0 = $('#div').children('div').last().attr('id');

JavaScript 方式:

var lastcommentq = document.getElementById('div').lastElementChild.id;

请注意,这适用于所有现代浏览器和 IE 9+。请参阅MDN 上的lastElementChild

于 2013-08-20T18:09:00.923 回答
0

这就是我会做的,但我不清楚这是否是你想要的:

$(function () {
    var lastchild = $('#div div:last-child').attr('id');
    alert(lastchild);
});

http://jsfiddle.net/pFjPS/

另外,我不相信类或 ID 可以以数字开头,因此您的标记可能无效

编辑:HTML5 支持它,但一般不推荐。

于 2013-08-20T18:05:31.337 回答
0

在 jquery 中:

$(function(){
  alert($("#div :last-child").attr('id'));
});
于 2013-08-20T18:06:48.220 回答