将Rel属性附加到第三个父JQuery的元素

时间:2014-01-30 17:24:05

标签: jquery

我有这样的HTML结构:

<div id='gallery-1' class='gallery galleryid-1628 gallery-columns-3 gallery-size-thumbnail'>
<dl class='gallery-item'>
    <dt class='gallery-icon landscape'>
        <a href='2829970281_large.jpg'><img width="300" height="300" src="2829970281_large-300x300.jpg" class="attachment-thumbnail" alt="2829970281_large" /></a>
    </dt>
</dl>
<dl class='gallery-item'>
    <dt class='gallery-icon landscape'>
        <a href='2829970282_large.jpg'><img width="300" height="300" src="2829970282_large-300x300.jpg" class="attachment-thumbnail" alt="2829970282_large" /></a>
    </dt>
</dl>
<dl class='gallery-item'>
    <dt class='gallery-icon landscape'>
        <a href='jpeg.jpg'><img width="300" height="300" src="jpeg-300x300.jpg" class="attachment-thumbnail" alt="jpeg" /></a>
    </dt>
</dl>

如何选择父div的图库id,并使用JQuery为子rel标记添加<a>属性?

到目前为止,这是我的工作:

$('.gallery-item a').attr('rel', $(this).parent('div').attr('id'));

期望的效果是每个<a>标记看起来像这样:

<a href="" rel="gallery-1">

我打算在多个图库中使用它,所有图库都有不同的ID,但是其中的3-4个<a>标记应该被赋予其父div容器的rel属性。

1 个答案:

答案 0 :(得分:1)

this未引用所选元素,您可以使用.attr()回调函数。在对每个元素执行一次的回调的上下文中,this引用所选元素。另外parent只选择元素,您应该使用.closest()代替:

$('.gallery-item a').attr('rel', function() {
    return $(this).closest('div').attr('id');
});