jQuery .attr返回undefined

时间:2014-05-29 18:43:16

标签: javascript jquery html

我的HTML包含元素.replyLink和类型为hidden的输入字段,该字段具有值(在本例中为462)。我希望能够在单击.replyLink元素时获取输入.hddnScrapId的value属性的值。这是HTML:

<div class="scrapItemParent">
    <input class="hddnScrapId" type="hidden" value="462"/>
    <img class="scrapProfilePic" src=" static/img/user/personalProfilePicture/mod_50_50/150972db1a0c9e863746c12797398b6e40ae05c8.jpg" />
    <div class="scrapContent"><br />
        <video class="scrapVideo" controls>
            <source src="../../../scrapll_m/static/vid/4045e7944d8ea8f10dd4826a1e1595a7cef73b0c.mp4" type="video/mp4">
        </video><br />
        <span class="scrapTime">2014-05-27 16:51:22<br />Erol Simsir
            <a class="replyLink" href="javascript:void(0);">Reply</a>
            <a class="replyClose" href="javascript:void(0);">x</a>
        </span>
    </div>
</div>

这是我现在的JS:

$('.replyLink').click(function(){ 
    var hddnScrapId = $(this).closest(".hddnScrapId").attr("value");
    alert(hddnScrapId);
});

这一直在说'未定义'。我猜问题是因为nearest()函数找不到输入字段hddnScrapId。为什么不起作用?

2 个答案:

答案 0 :(得分:1)

1)closest只查看元素本身及其祖先,.hddnScrapId元素不是单击元素的父元素。

2)要获取最新值,您必须使用val,而不是attr("value")

你想要这个:

var hddnScrapId = $(this).closest(".scrapItemParent").find(".hddnScrapId").val();

答案 1 :(得分:0)

您的选择器不正确。您可以使用:

var hddnScrapId = $(this).closest('.scrapContent').siblings(".hddnScrapId").attr("value");
alert(hddnScrapId);