2016-01-31 3 views
-6

Когда я использую селектора jQuery для добавления динамически генерируемого html в скрытый div, они не работают. Как добавить что-то в скрытый div с jquery? Мне нужно сделать div скрытым при добавлении контента после ajax-запроса, потому что я должен генерировать много html-блоков и добавлять их на страницу, я хочу добавить все блоки в скрытый div, а затем показать весь контент (сделать div visible).jQuery add html content in hidden div

+0

Показать код, который вы пытаетесь использовать, что не работает –

+0

также обеспечивают гораздо более конкретное описание проблемы, так как оно относится к коду – charlietfl

+0

@PatrickEvans существует много кода, проблема в том, что - селектор не работа в скрытом div, когда это видно - все добавлено, но когда я делаю $ ('# panel'). style.visibility = 'hidden' ;, селекторы не работают для добавления в него содержимого html. – user3872496

ответ

1

Вы можете использовать шкурку JQuery() и шоу() функция для этого, что немного чище, чем используется .css() ZeJur. Посмотрите на мою Plunker example

Пример:

<div class="hiddenContent">I am hidden div</div>  
<button class="addDynamicContent">Add dynamic content to div - hide while doing</button> 

Сценарий:

<script> 
$('.addDynamicContent').click(function() { 
     $.ajax({ 
      url: "http://api.icndb.com/jokes/random", 
      beforeSend: function() { 
      $('.hiddenContent').hide(); 
      console.log('I hide before request'); 
      }, 
      success: function(response) { 
      $('.hiddenContent').html(response.value.joke); 
      $('.hiddenContent').show(); 
      console.log('I show after I got the content'); 
      } 
     }); 
     }); 
</script> 

Заканчивать Plunker

1

Чтобы скрыть элемент использовать jQuery.css() метод

$('#panel').css('visibility', 'hidden');

и показать его обратно:

$('#panel').css('visibility', 'visible');

Если Вам необходимо скрыть свой элемент перед загрузкой новых элементов Вы можете использование beforeSend функция:

beforeSend: function(){ 
    $('#panel').css('visibility', 'hidden'); 
} 

и после загрузки всех Ваших данных и разобраны Используй success функцию, чтобы показать его снова:

success: function(data){ 
    $('#panel').append('<div>' + parsedData + '</div>').css('visibility', 'visible'); 
} 

и все вместе:

$.ajax({ 
     method: "POST", 
     url: "sample.php", 
     dataType: "json", 
     beforeSend: function(){ 
      $('#panel').css('visibility', 'hidden'); 
     }, 
     success: function(data){ 
      $('#panel').append('<div>' + parsedData + '</div>').css('visibility', 'visible'); 
     }, 
    }); 
+0

Я пробовал $ ('selector'). Hide() и $ ('selector'). Show(), и он работает для меня, но когда я добавляю элементы, я скрыл div , их высота и ширина возвращаются 0 – user3872496

+0

Основное различие между '.hide()' и '.css ('visibility')' состоит в том, что '.hide()' похоже на css 'display: none', а когда используется не должно быть места, выделенного для него между другими тегами, но когда используется '.css ('visibility')', тег не отображается, но для него выделяется пространство на странице. – ZeJur