jQuery - 查找last-child元素的.attr

时间:2014-11-27 10:32:42

标签: jquery

我试图通过jQuery获取最后一个子元素的.attr("msg_g")

<div id="append">
  <div class="h" msg_g="1">A</div>
  <div class="y" msg_g="2">B</div>
  <div class="h" msg_g="3">C</div>
</div>

我非常确定下面的脚本必须有效,但是给我回复未定义

var msg_g = $( "#append div:last-child" ).attr( "msg_g" );
console.log(msg_g);

我使用下面的脚本来检查last-child&#39; hasClass&#39;并且工作完美,为什么不在.attr()

上工作

.hasClass()

的示例
if($( "#append div:last-child" ).hasClass( "y" )){
    var last_msg_class="by_you";
}else if($( "#append div:last-child" ).hasClass( "h" )){
    var last_msg_class="by_friend";
}

3 个答案:

答案 0 :(得分:1)

不要添加msg_g属性,请尝试使用data-*属性。

将您的html修改为: -

<div id="append">
<div class="h" data-msg_g="1">A</div>
<div class="y" data-msg_g="2">B</div>
<div class="h" data-msg_g="3">C</div>
</div>

在Jquery中尝试: -

var msg_g = $( "#append > div:last" ).data( "msg_g" );

并确保您的Jquery代码位于document.ready块内。

答案 1 :(得分:1)

确保您的代码在dom准备就绪后运行。如果您的脚本在呈现元素之前执行,则会出现问题。

$(document).ready(function() {
    $("#append > div:last").attr("msg_g");
});

答案 2 :(得分:0)

我已经测试了它,它的工作原理。确保在DOM元素准备就绪时执行代码。

$( document ).ready(function() {
    var msg_g = $( "#append div:last-child" ).attr( "msg_g" );
    alert(msg_g);
});

检查一下: http://jsfiddle.net/ytj8z0j7/