仅当图中的图像具有 class 时才向图中添加 class

Add a class to a figure only if a image within figure has a class

如果其中的图像具有 right 的 class,我如何将 class 添加到 figure 元素?,我只希望它在以下情况下执行图像的 class 为 right

$(function() {
if ($('img').hasClass('right')) {
  $('figure').addClass('test');
 }
 });

这会向页面上的每个 figure 添加一个 class test

您可以使用:

$('img.right').closest('figure').addClass('test');

如果 figure 元素始终是直接父元素,您还可以使用:

$('img.right').parent('figure').addClass('test');

附带说明一下,您的示例不起作用的原因是您将 class test 添加到 all 使用 $('figure').addClass('test') 时的图形元素。

您需要获取元素的上下文,它看起来更像这样:

$('img.right').each(function(){
    $(this).parent('figure').addClass('test');
});

避免 .each() 循环并使用其他建议之一。

您可以使用 :has 选择器:

$('figure:has(img.right)').addClass('test');