1

检查其他一些帖子,找到了我需要的代码,但并没有完全按照我的需要去做。

我想根据图像的 alt 标签向父元素添加一个类。

所以从这里:

<div class="img-wrap">
   <div class="img-icon">
      <a href="">
         <img alt="home" />
      </a>
   </div>
</div>

对此:

<div class="img-wrap home">
   <div class="img-icon">
      <a href="">
         <img alt="home" />
      </a>
   </div>
</div>

这是我正在使用的代码:

$('img').each(function() {
$(this).parent().addClass( $(this).attr('alt') );
});

虽然这添加了所需的类,但它会将其添加到“a”......但是我希望它添加到#img-wrap。我怎样才能做到这一点?

4

4 回答 4

3

ID 应该是唯一的。你不应该这样重复 ID。尝试将其更改为 classclass="img-wrap"并查看以下代码。

HTML:

<div class="img-wrap">
   <div class="img-icon">
      <a href="">
         <img alt="home" />
      </a>
   </div>
</div>

代码:

$('img').each(function () {
   $(this).closest('.img-wrap').addClass(this.alt);
});
于 2012-10-22T19:13:34.880 回答
1
$('img').each(function() {
$(this).parents('#img-wrap').addClass( $(this).attr('alt') );
});

或者

$('img').each(function() {
    $(this).parent().parent().parent().addClass( $(this).attr('alt') );
    });
//to make it more obvious why it is not selecting the #img-wrap <div>

是的,#IDs 应该只使用一次,如果重复出现,请使用一个类

于 2012-10-22T19:12:40.620 回答
0

使用 .closest() 选择你想要的父元素 http://api.jquery.com/closest/

于 2012-10-22T19:12:46.063 回答
0

尝试使用.closest()

请注意, HTML 页面中的ID应该是唯一的。尝试给 div 一个而不是一个ID

    $('img').each(function() {
       $(this).closest('.img-wrap').addClass( $(this).attr('alt') );
    });


<div class="img-wrap">
  <div class="img-icon">
     <a href="">
       <img alt="home" />
     </a>
  </div>

于 2012-10-22T19:13:57.233 回答