[英]Implementing a parent selector in CSS with jQuery that applies automatically to new elements in DOM
CSS不支持父选择器,例如“选择包含<img>
所有<p>
<img>
”。
这里提出的一种解决方案是使用jQuery,例如:
$('#parent:has(#child)').addClass('my-special-class');
但是,我有一个<div>
会定期用新内容更新,并且我需要继续将my-special-class
重新应用到与该<div>
中的选择器'#parent:has(#child)'
相匹配的新元素。 。
怎么可以这样呢?
我正在设计第三方插件的样式,因此对其样式,事件等没有太多控制权。
一种解决方案是在容器div上绑定DOMSubtreeModified
事件,然后在其中添加代码。
$('.container').on("DOMSubtreeModified",function(){
$('.parent:has(.child)').addClass('special-child');
});
// find elements var parent = $("#parent") var button = $("button") // handle click and add class button.on("click", function() { const el = '<div class="parent"><p class="child">Hello World</p></div>'; parent.after(el); }) $(function() { $('.parent:has(.child)').addClass('special-child'); $('.continer').on("DOMSubtreeModified", function() { $('.parent:has(.child)').addClass('special-child'); }); })
body { background: #20262E; padding: 20px; font-family: Helvetica; } .child { background: #fff; border-radius: 4px; padding: 10px; font-size: 25px; text-align: center; transition: all 0.2s; margin: 4px auto; width: 300px; } button { background: #0084ff; border: none; border-radius: 5px; padding: 8px 14px; font-size: 15px; color: #fff; } .special-child { color: red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <div class="continer"> <div class="parent" id="parent"> <p class="child">Hello World</p> </div> </div> <button>Add Child</button>
如果添加以下jquery和仅一个类,它将像:visited
一样工作:
$("div.my-div").click(function(){
$(this).addClass("visited");
});
只需向CSS添加一个类:
.visited:hover{
outline: 2px solid orange;
}
如果将此代码与当前代码一起添加,您将获得与:visited
相同的功能。
这是我在您的代码上尝试过的小提琴:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.