这并不能回答您的实际问题
但我相信它确实可以解决您的问题。
我的理解是,当内容块为空时,您希望删除整个<div> 块,即。
给出简单的html/twig代码
<div class="ui message positive home-messages">
{% content 'homepage/message' %}
</div>
这可以通过 jQuery 来完成。
$(document).ready(function() {
if ( $.trim( $('div.message').text() ).length == 0 ) {
$('div.message').remove();
}
});
$('div.message') :找到带有“消息”类的<div> 块
$('div.message').text() :复制封闭的文本(删除所有html标签)
@ 987654329@ :剪掉所有空格,包括回车和不间断空格 (&nbsp;)
$.trim( $('div.message').text() ).length :测量剩下的长度
如果为零,则 <div> 块为空(无文本或空子 html 块),因此
$('div.message').remove(); :删除整个 <div> 块
如果您需要指定多个类以避免使用 message 类删除其他空 div 块,您可以链接这些类,
例如$('div.message.home-messages')。
您可以将jQuery代码保存到/themes/<theme>/assets/javascript/remove_empty.js
然后用
将其注入相关页面
function onEnd() {
$this->addJs('assets/javascript/remove_empty.js');
}
您可以改为将remove_empty.js 添加到布局文件底部的 JavaScript 资产列表中,以便在整个网站上使用。如上所述,注入它意味着它只会伴随该页面。
你可以使用更简单的
$(document).ready(function() {
$('div.message:empty').remove();
});
但这将要求您的 html/twig 全部为一行...
<div class="ui message positive home-messages">{% content 'homepage/message' %}</div>
...否则<div> 块将包含回车符(空格),因此不会是:empty。
另见:
* Using an if statement to check if a div is empty
* How do I remove empty elements from the dom using jQuery?