2014-09-09 4 views
1

Я новичок в jQuery и возился с попыткой добавить новые элементы в DOM после того, как новый узел был вставлен в DOM.Добавление скрытого div в динамически созданный div

Предположим, у меня есть опрос. После того, как пользователь проголосует, новый div с классом .voted вставляется в div, который содержит опрос. Если бы у меня был скрытый div, который я хотел бы вставить и показать только тогда, когда этот новый div был добавлен в DOM, возможно ли это?

Я делал исследование на сайте JQuery и до сих пор, ближайший я придумал что-то вроде этого:

$('.hidden-div').livequery(function() { 
    appendTo('.voted'); 
}); 

Я попробовал это на моем сайте, но, как и ожидалось, Ждут» т работы. Есть ли способ достичь этого с помощью jQuery?

Edit: Вот упрощенная версия разметки:

Перед пользователем Проголосовало:

<div id="poll"> 
    (poll here) 
</div> 
<div id="hidden-div" style="display:none">content</div> 

После пользователь проголосовал:

<div id="poll"> 
    <div class="voted"> 
     (some content here)        <-- in here----------| 
    </div>                 | 
</div>                  | 
<div id="hidden-div" style="display:none">content</div> <-- I want this div..| 
+0

Таким образом, вы вставляете две новых див? Или 'скрытый-div' уже существует? Пожалуйста, предоставьте все соответствующие коды, включая разметку. –

+0

Plz, post [скрипка] (http://jsfiddle.net/) со всеми html, javascript и css. –

+0

@Chris На самом деле, только один новый div ('.voted'), который будет добавлен плагином poll. ('.hidden-div') уже существует. Я вставил упрощенную версию моей разметки, чтобы дать вам лучшую идею. – J82

ответ

0

Вы можете использовать append():

var html = '<div id="hidden-div">content</div>'; 
$('.append').click(function() { 
    $('.voted').append(html); 
}); 

Я сменил триггер на клик для демонстрационных целей, но триггер может быть тем, что вам нужно. Содержимое будет размещено в пределах voted div.

JS Fiddle Demo

Обратите внимание, что это будет постоянно добавлять HTML-код по щелчку. Для того, чтобы заблокировать его от прилагаемых несколько раз, используйте .length который подсчитывает количество элементов, присутствующее на странице:

$('.append').click(function() { 
    if($('#hidden-div').length == 0){ 
     $('.voted').append(html); 
    } 
}); 
+0

Эй, Дэн, я попробовал ваш код, но div не добавился. Странный. Я постараюсь поиграть с ним. – J82

+0

Он добавляется, но скрыт, поэтому на странице ничего не отображается. Я использовал ваш пример w/'display: none' – Dan

+0

См. Обновленный пример без' display: none': http: // jsfiddle.net/0711fz2f/1/Обратите внимание, что это будет добавляться несколько раз, если пользователь нажимает несколько раз – Dan

Смежные вопросы