這不回答你的實際問題
但確實,我相信,解決你的問題。
我的理解是,您希望在空的時候刪除整個<div>
塊,即,當內容塊爲空時。
鑑於簡單
<div class="ui message positive home-messages">
{% content 'homepage/message' %}
</div>
這在html /樹枝代碼可以使用jQuery來完成。
$(document).ready(function() {
if ($.trim($('div.message').text()).length == 0) {
$('div.message').remove();
}
});
$('div.message')
:與「消息」類
$('div.message').text()
找到<div>
塊:以包圍文本的副本(刪除所有HTML標籤)
$.trim($('div.message').text())
:修剪過的所有空格包括回車和(
)
$.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 /枝是所有一行...
<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?