Использование оператора if для проверки того, является ли div пустым
Я пытаюсь удалить определенный div, если отдельный div пуст. Вот что я использую:
$(document).ready(function () {
if ('#leftmenu:empty') {
$('#menuTitleWrapper').remove();
$('#middlemenu').css({ 'right': '0', 'position': 'absolute' });
$('#PageContent').css({ 'top': '30px', 'position': 'relative' });
}
});
Я думаю, что это близко, но я не могу понять, как написать код для проверки #leftmenu пуст. Любая помощь приветствуется!
Ответы
Ответ 1
Вы можете использовать .is()
.
if( $('#leftmenu').is(':empty') ) {
// ...
Или вы можете просто проверить свойство length
, чтобы узнать, найден ли его.
if( $('#leftmenu:empty').length ) {
// ...
Помните, что пустое означает также пустое пространство. Если есть вероятность, что будет свободное пространство, вы можете использовать $.trim()
и проверить длину содержимого.
if( !$.trim( $('#leftmenu').html() ).length ) {
// ...
Ответ 2
Это зависит от того, что вы подразумеваете под пустым.
Чтобы проверить, нет ли текста (это позволяет сами дочерние элементы):
if ($('#leftmenu').text() == '')
Чтобы проверить, нет ли дочерних элементов или текста:
if ($('#leftmenu').contents().length == 0)
Или
if ($('#leftmenu').html() == '')
Ответ 3
Если вам нужна быстрая демонстрация того, как вы проверяете наличие пустых divs, я предлагаю вам попробовать эту ссылку:
http://html-tuts.com/check-if-html-element-is-empty-or-has-children-tags/
Ниже приведены короткие примеры:
Использование CSS
Если ваш div пуст без каких-либо белых пробелов, вы можете использовать CSS:
.someDiv:empty {
display: none;
}
К сожалению, нет селектора CSS, который выбирает предыдущий элемент сиблинга. Существует только для следующего элемента sibling: x ~ y
.someDiv:empty ~ .anotherDiv {
display: none;
}
Использование jQuery
Проверка длины текста элемента с помощью функции text()
if ( $('#leftmenu').text().length == 0 ) {
// length of text is 0
}
Проверьте, есть ли у элемента какие-либо дочерние теги внутри
if ( $('#leftmenu').children().length == 0 ) {
// div has no other tags inside it
}
Проверьте наличие пустых элементов, если они имеют пробел
if ( $.trim( $('.someDiv').text() ).length == 0 ) {
// white-space trimmed, div is empty
}
Ответ 4
Вы можете расширить jQuery
таких функций:
Расширить:
(function($){
jQuery.fn.checkEmpty = function() {
return !$.trim(this.html()).length;
};
}(jQuery));
Использование:
<div id="selector"></div>
if($("#selector").checkEmpty()){
console.log("Empty");
}else{
console.log("Not Empty");
}
Ответ 5
Попробуйте следующее:
$(document).ready(function() {
if ($('#leftmenu').html() === "") {
$('#menuTitleWrapper').remove();
$('#middlemenu').css({'right' : '0', 'position' : 'absolute'});
$('#PageContent').css({'top' : '30px', 'position' : 'relative'});
}
});
Это не самый красивый, но он должен работать. Он проверяет, является ли innerHTML (содержимое #leftmenu) пустой строкой (т.е. Внутри ничего нет).
Ответ 6
В моем случае у меня было несколько элементов, чтобы спрятаться на document.ready. Это функция (фильтр), которая работала для меня до сих пор:
$('[name="_invisibleIfEmpty"]').filter(function () {
return $.trim($(this).html()).length == 0;
}).hide();
или .remove(), а не .hide(), что бы вы ни выбрали.
FYI:
Это, в частности, решение, которое я использую, чтобы скрыть раздражающие пустые ячейки таблицы в SharePoint (в дополнение к этому условию "|| $(this).children(" menu "). Length".
Ответ 7
if (typeof($('#container .prateleira')[0]) === 'undefined') {
$('#ctl00_Conteudo_ctrPaginaSistemaAreaWrapper').css('display','none');
}
Ответ 8
if($('#leftmenu').val() == "") {
// statement
}