Подтвердить что ты не робот

Как добавить элемент DOM с помощью jQuery?

У меня есть функция, которую я сейчас использую, чтобы показать скрытый div.a_type

Как я могу изменить этот код, чтобы вместо того, чтобы затухать в скрытом div, Я могу добавить новый div в DOM

jQuery(function(){   // Add Answer

    jQuery(".add_answer").click(function(){
      if(count >= "4"){
        alert('Only 4 Answers Allowed');
        }else{
      var count = $(this).attr("alt");
      count++;
      $(this).parents('div:first').find('.a_type_'+count+'').fadeIn();
      $(this).attr("alt", count);
    }

    }); 

});

Хорошо, теперь, когда у меня это выяснено, у меня есть еще один вопрос,

У меня есть другая функция, которая удаляет вставленный div, если нажата кнопка. Теперь он не работает, когда дополнительные divs не загружаются в dom на pageload. Как я могу запустить функцию, чтобы удалить их сейчас?

jQuery (function() {//Скрыть ответ

jQuery(".destroy_answer").click(function(){
  $(this).parents("div:first").fadeOut(function (){ $(this).remove() });
   var count = $(this).parents('div:first').parents('div:first').find('.add_answer').attr("alt");
   count--;
   $(this).parents('div:first').parents('div:first').find('.add_answer').attr("alt", count);

}); 

});

4b9b3361

Ответ 1

Как добавить его после последнего div.

$('.a_type:last').insertAfter('<div class="a_type">content</div>');

изменить
Вы можете получить информацию через AJAX-вызов somefile.php, somefile должен затем вернуть содержимое, которое вы хотите в div:

$.get('path/to/somefile.php', function(data){
 $('.a_type:last').insertAfter('<div class="a_type">' + data + '</div>');
});

Somefile.php должен выглядеть примерно так:

<?php
 session_start();
 $sessiondata = $_SESSION['data'];
 echo "Whatever you type here will come inside the div bla bla $sessiondata";
?>

изменить
Хорошо, попробуйте следующее:

jQuery(function(){ // Add Answer

jQuery(".add_answer").click(function(){
  if(count >= "4"){
    alert('Only 4 Answers Allowed');
    }else{
  var count = $(this).attr("alt");
  count++;
  $('.a_type_'+count-1+'').insertAfter(' 
       Place content back here');
  $(this).attr("alt", count);
}

});

});

Просто перемешайте в AJAX, если вам все еще нужно.

Ответ 2

У меня есть другая функция, которая удаляет вставленный div, если нажата кнопка. Теперь он не работает, когда дополнительные divs не загружаются в dom на pageload. Как я могу запустить функцию, чтобы удалить их сейчас?

У вас есть три варианта решения самой последней проблемы.

  • Вы можете использовать liveQuery, плагин jQuery, который повторно применяет обработчики событий к элементам DOM при их добавлении. Примечание. Этот плагин будет эффективен только в том случае, если вы используете встроенные функции добавления/добавления jQuery DOM (добавление/добавление/после/перед/вставкаBefore/insertAfter и т.д.).

  • В качестве альтернативы вы можете просто повторно применить обработчики при добавлении новых элементов вручную... (не самый лучший вариант)

  • Третий, и, на мой взгляд, лучшим вариантом является использование огромной силы делегирования событий. То, что вы делаете, - это привязать обработчик событий к любому родителю, например, если вы собираетесь динамически добавлять элементы списка в неупорядоченный список, вместо того чтобы постоянно повторно применять обработчики событий к каждому добавленному элементу, вы можете просто присоединить обработчик событий для родителя, а затем найдите цель события:

    $('ul').click(function(e){
        var target = e ? e.target : window.event.srcElement;
        if(target.nodeName.toLowerCase() === 'li') {
            // Do Stuff...
        }
    })