JQuery parentsUntil()与height()组合不正常

时间:2014-05-22 17:46:17

标签: jquery html

我有这个HTML(评论显示了JQuery应该如何应用我需要的最后一个父元素)

<div id="profilesHolder">
<div class="parentArrow"></div>

<!-- THE LAST PARENT JQUERY SHOULD FIND -->
<div class="scrapItemParent">
    <img class="scrapProfilePic" src=" static/img/user/personalProfilePicture/mod_50_50/0d6e6c14fb915c8db38ee4d17e0d4631cb4538a9.jpg" />

    <!-- THE SECOND PARENT JQUERY SHOULD FIND -->
    <div class="scrapContent">Test Scrap no. 1. <a class="scrapLink" href="http://google.com">google.com</a> <a class="scrapLink" href="http://bing.com">bing.com</a> <a class="scrapLink" href="http://nokia.com">nokia.com</a><br />
        <div class="scrapImg">
            <img class="scrapImgItem" src="../../../scrapll_m/static/img/user/scrap/orig/12f3c8ce2aa2626fbaaf6bec54933a6185f9e63d.jpg" alt="Scrap Image" />
            <img class="scrapImgItem" src="../../../scrapll_m/static/img/user/scrap/orig/1df38f26091c23f942bc1529a0391b8309892c23.jpg" alt="Scrap Image" />
            <img class="scrapImgItem" src="../../../scrapll_m/static/img/user/scrap/orig/ef101b36d5ed6a420fcef6ddc7a13aa18da4c121.jpg" alt="Scrap Image" />
            <img class="scrapImgItem" src="../../../scrapll_m/static/img/user/scrap/orig/601eb46725685f9390efae57af1c39596accc705.jpg" alt="Scrap Image" />
        </div>
        <iframe class="scrapVideo" src="//www.youtube.com/embed/Ys6-DCotJt8" frameborder="0" allowfullscreen></iframe><br />

        <!-- THE FIRST PARENT JQUERY SHOULD FIND -->
        <span class="scrapTime">2014-05-21 17:03:21<br />Erol Simsir
            <a class="replyLink" href="#">Reply</a> <!-- STARTING POINT TO FIND THE PARENT DIV -->
        </span>
    </div>
</div>      

这是JS:

$(window).load(function() {
    $('.replyLink').click(function(){ 
        var currentHeight = $(this).parentsUntil("#profilesHolder").height();
        alert(currentHeight);
    });
});

使用$(window).load()给了有同样问题的人一个提示,但它没有为我改变任何东西($(document).ready())。

无论如何,JS表明JQuery应该查找元素'.replyLink'的父元素,一直到元素'#profilesHolder'。这意味着应该通过JQuery找到元素'.scrapItemParent'。这很顺利,因为当我这样做JS时,例如:

$(window).load(function() {
    $('.replyLink').click(function(){
        $(this).parentsUntil("#profilesHolder").css("background", "red");
    });
});

这段代码有效,它改变了右父元素的背景,但是当我想获得JQuery找到的父元素的高度时,它会一直显示30,这是'直接父元素的高度' .replyLink”。因此,当我在parentsUntil()函数之后使用height()函数时,parentsUntil()函数在找到直接父级的高度后停止,而不是一直向上移动'.scrapItemParent'元素。

谁可以帮我解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试从parentsUntil()切换到nearest()。我在这个example fiddle测试了它,它似乎有效。

$(this).closest("#profilesHolder").height();

小提琴示例 - http://jsfiddle.net/8N9Xh/

答案 1 :(得分:0)

由于ID是唯一的,您可以使用

$("#profilesHolder").height();