jQuery:如果孩子有类,则将类/css添加到父类

Posted

技术标签:

【中文标题】jQuery:如果孩子有类,则将类/css添加到父类【英文标题】:jQuery: if child has class, add class/css to parent 【发布时间】:2016-10-18 03:04:18 【问题描述】:

如果 (a) 的子 (img) 具有 .ls-thumb-active 类,我想在 (a) 中添加悬停功能...这是 html 的示例

<a href="#" class="ls-thumb-1" style="width: 400px; height: 125px;">
    <img src="http://ldngrp.co/wp-content/uploads/2014/10/apprenticeships.jpg" class style="opacity: 0.7"></a>

<a href="#" class="ls-thumb-2" style="width: 400px; height: 125px;">
   <img src="http://ldngrp.co/wp-content/uploads/2014/10/apprenticeships.jpg" class="ls-thumb-active" style="opacity: 1"></a>

这是一个 wordpress 插件,并且已经有一个悬停事件(不透明度 0.7>1),但是当子级(img)具有类 .ls-thumb 时,我还想将 css 样式添加到父级(a) -active...我已将这些样式应用于css中的.shadow...

box-shadow: 0 0 40px 1px rgba(17,17,17,0.2);
z-index: 2;

我想出了几行 jQuery,但我不知道为什么它不起作用!这是我迄今为止尝试过的......

$('a.ls-thumb-1:has(img.ls-thumb-active)').addClass('shadow');
$('.ls-thumb-active').parent().addClass('shadow');
$( "a:has(img.ls-thumb-active)" ).addClass( "shadow" );
$('a:has(.ls-thumb-active)').addClass('shadow');

任何帮助将不胜感激!

谢谢你:)

【问题讨论】:

$(".ls-thumb-active").parent().addClass("shadow"); 非常适合我。 $('a:has(img.ls-thumb-active)').addClass('shadow'); 也是如此 所以你真的想为所有a 元素添加悬停功能。并根据图像是否处于活动状态来切换课程? 是的,但仅当子元素具有类 .ls-thumb-active 时才切换! 【参考方案1】:

你已经接近了...... 你只需要选择不同的方式$('a .ls-thumb-active').addClass('shadow');

只要该 DOM 元素在页面加载时可用,这应该可以工作。

编辑(根据 OP 的原始请求):

$.fn.addShadowToParent = function() 
    this.parent().addClass('shadow');
;

$('a .ls-thumb-active').addShadowToParent();

Codepen

注意: 在 WordPress 上,您通常必须使用 jQuery 而不是 $ 才能使其正常工作。

【讨论】:

OP 想要将shadow 类添加到&lt;a&gt; 标记中。这将选择该类,然后将其添加到 &lt;img&gt; 标记中。 知道了!谢谢!给我 1 秒,我会在更多反对票到来之前解决它 你的第一个建议 - $('a .ls-thumb-active').addClass('shadow');适用于 js fiddle,但不适用于我的网站! 尝试使用jQuery 而不是$ 使用 jQuery 代替不起作用...我想知道这是否是因为您所说的 DOM 元素在页面加载时可用,因为它似乎在其他任何地方都可以使用,对不起,我是这样一个js新手!你知道我怎么能解决这个问题吗?

以上是关于jQuery:如果孩子有类,则将类/css添加到父类的主要内容,如果未能解决你的问题,请参考以下文章

如果 href 以 http://www.twitter.com/ 开头,则将类添加到 <a> [重复]

如果li在react功能组件中具有活动类,如何将类添加到父元素ul

当孩子可见时如何将课程添加到父课程?

如果链接包含特定文本,则jQuery将类添加到href

jQuery 如果没有,则将 http:// 作为前缀添加到文本输入

如果类内容的值小于 10,则将 ::before 'content' 添加到 CSS 类