Скрыть элемент с помощью CSS, если у него нет дочернего элемента [duplicate]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

15
задан Simon East 25 June 2014 в 08:34
поделиться

5 ответов

Еще лучше (при условии jQuery):

$(document).ready(function() { $('div:empty').remove(); });

EDIT: Другие ответы хороши, но OP хотел удалить пустой элемент, а не скрывать его.

21
ответ дан Daniel Huckstep 24 August 2018 в 16:16
поделиться

Вот еще один простой способ ... с помощью фильтра () ...

$('div').filter(function() {

  return $.trim($(this).text()) === ''

}).remove()
6
ответ дан Abbey 24 August 2018 в 16:16
поделиться

Я думаю, вы можете сделать следующее:

$(function() {
  $("div:empty").hide();
});

Псевдоселектор jQuery пуст велик.

10
ответ дан Allain Lalonde 24 August 2018 в 16:16
поделиться

Вы можете сделать это, используя только CSS:

div:empty { display: none }
38
ответ дан Andrew 24 August 2018 в 16:16
поделиться

Вы также можете использовать CSS-only для решения этой проблемы, помещая таблицу с style="empty-cells:hide" вокруг содержимого и меняя div на td, например:

До:

<div>Content</div>

После:

<table style="empty-cells:hide"><tr><td>Content</td></tr></table>

3
ответ дан Pbk1303 24 August 2018 в 16:16
поделиться