仅将函数应用于父级

时间:2014-08-23 17:13:42

标签: javascript jquery this parent

我正在学习jQuery,我正在使用来自http://jsfiddle.net/MUsT8

的Javascript代码

在另一个问题中,我问如何将某些内容翻译成jQuery以便能够使用类和用户Pointy解决了我的问题:

var rgb = getAverageRGB($('.first_img')[0]);
$('.post').css("background-color", 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')');

但是这有一个问题,并且它会为所有' post'添加背景颜色。当我只希望它出现在图像所在的父帖子时。我的Html如下所示。

<div class="post">
    <div class="circle">
        <img class="first_img" id="try" src="./img/train.jpg" height="100%">
    </div>
    <h2 class="title">
        The big Lebowski
    </h2>
</div>

我打算让jQuery工作的意图是这样的:

var rgb = getAverageRGB($('.first_img')[0]);
$(this).parent().parent().css("background-color", 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')');

3 个答案:

答案 0 :(得分:2)

所以引用元素并以那种方式获取父元素

var img = $('.first_img').eq(0);
var rgb = getAverageRGB(img[0]);
img.parent().parent().css("background-color", 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')'); 

答案 1 :(得分:2)

如果您希望$(this)依次引用每个.first_img,则需要对其进行迭代:

$('.first_img').each(function () {
    var rgb = getAverageRGB(this);
    $(this).closest('.post').css("background-color", 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')');
});

答案 2 :(得分:1)

使用closest,它完全符合您的需要。

像:

$(this).closest('.post').css(...)

jQuery doc中的详细信息。