javascript - 当自定义元素没有值时,CSS 隐藏祖父 div 和所有子元素
问题描述
当祖父母 div 中的自定义元素为空时,我试图隐藏祖父母 div 及其所有子元素。不幸的是,我有无法直接控制的 HTML,因为它是基于 Salesforce 社区构建的,它强制以某种方式创建 HTML。但是,我可以编辑 CSS 和 JS 来实现这一点。
这是一个 HTML 示例,当元素“lightning-formatted-text”为空时,我想用类 ="slds-col slds-grid slds-size_12-of-12" 隐藏祖父 div 并将其保留在原位当一个值在该元素中时:
<div c-contactinformation_contactinformation="" class="slds-col slds-grid slds-size_12-of-12">
<div c-contactinformation_contactinformation="" class="slds-border_bottom slds-clearfix">
<div c-referralcontactinformation_referralcontactinformation="" class="slds-float--left">
<lightning-output-field c-contactinformation_contactinformation="" class="slds-form-element slds-form-element_stacked" lightning-outputfield_outputfield-host=""><span lightning-outputfield_outputfield="" class="slds-form-element__label">Last Name</span>
<div lightning-outputfield_outputfield="" class="slds-form-element__control">
<lightning-formatted-text lightning-outputfield_outputfield="" class="slds-form-element__static">testLastName</lightning-formatted-text>
<slot lightning-outputfield_outputfield=""></slot>
</div>
</lightning-output-field>
</div>
</div>
</div>
当该元素为空时,我尝试了很多这种 CSS 的变体,但收效甚微:
.slds-col.slds-grid.slds-size_12-of-12 lightning-formatted-text:not(:empty):before {
display: block;
}
我注意到的是删除 HTML 的以下部分确实允许它工作。我已经在 JSfiddle 中进行了测试,方法是删除它并向具有某些值的“lightning-formatted-text”元素添加“data-label”并添加“content: attr(data-label);” 到上面的 CSS
<lightning-output-field c-contactinformation_contactinformation="" class="slds-form-element slds-form-element_stacked" lightning-outputfield_outputfield-host=""><span lightning-outputfield_outputfield="" class="slds-form-element__label">Last Name</span>
</lightning-output-field>
关于 CSS 解决方案的任何想法,让其与自定义元素“lightning-output-field”和 HTML 中的跨度一起工作?如果这不能在 CSS 中完成,那么 JS 解决方案是什么?
先感谢您!
解决方案
css 中没有办法影响 jQuery/js 中孩子的父母,你可以这样做:
$('lightning-formatted-text').each(function(){
if($(this).is(':empty') || $(this).html(' ')){
$(this).parents('.slds-col.slds-grid.slds-size_12-of-12').hide()
// or $(this).parents('.slds-col.slds-grid.slds-size_12-of-12').remove()
}
})
推荐阅读
- python - 如何让 selenium 会话在 heroku 中保持活跃?
- php - Codeigniter 文件上传,例如 docx 等 下载后的空白页
- python - 满足特定条件时替换列表中的元素
- flutter - 颤振冻结,使用联合/密封类时如何返回值并停止执行函数
- azure - 在 Azure 数据工厂中读取 Parquet 文件时出现问题
- visual-studio-code - 更漂亮的扩展在 vs 代码中不起作用
- sql - 如何使用 SQL 使用一个命令更改/更改多个列的名称?
- laravel - 模型启动事件在 Laravel 7 中没有触发
- python - 为什么 pd.reset_index 将 Series 转换为 DataFrame
- python - 如何使用 Matplotlib 绘制具有非线性 x 轴刻度的曲线?