Добавление полей ввода с помощью jQuery не работает

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Я пытаюсь создать поле ввода динамически, используя jQuery. Это работает до определенного момента, но затем полностью перестает работать, в консоли нет ошибки, и я в замешательстве, пожалуйста, помогите.

Я прикреплю фрагмент вместе с кодом, чтобы вы могли лучше понять, что происходит.

Я не могу определить проблему, потому что я не до конца понимаю, что происходит, но я могу попробовать:

Когда я создаю цвет, я также хочу создать размер под этот цвет, это работает для первого цвета, но не работает для других цветов. Что я делаю не так?

 $(document).ready(function() {
  $("#add-color").click(function() {
    $("#color-input-house")
      .html($("#color-input-house")
        .html()   '<div class="form-group">'  
        '<input type="text" class="form-control colors" placeholder="Color">'  
        ' <button type="button"  class="add-size small btn btn-primary rounded form-control">Add Size</button>'  
        ' <button type="button"  class="remove-size small btn btn-warning rounded form-control">Remove Size</button>'  
        ' <div class="size-input-house"></div></div>');
  });
  $("#remove-color").click(function() {
    if ($(".colors").length !== 1) {
      $(".add-size").last().remove();
      $(".remove-size").last().remove();
      $(".colors").last().remove();
    }
  });
  $(".add-size").click(function() {
    $(this)
      .parent()
      .find(".size-input-house")
      .html($(".size-input-house")
        .html()   '<div class="form-group">'  
        '<input type="text" class="form-control sizes" placeholder="Size"></div>');
  });
  $(".remove-size").click(function() {
    if ($(".sizes").length !== 1) {
      $(".sizes").last().remove();
    }
  });

});  
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
  <input type="text" class="form-control colors" placeholder="Color">
  <button type="button" class="add-size small btn btn-primary rounded form-control">Add Size</button>
  <button type="button" class="remove-size small btn btn-warning rounded form-control">Remove Size</button>
  <div class="size-input-house"></div>
</div>
<div id="color-input-house"></div>
<div class="form-group">
  <div>
    <button type="button" id="add-color" class="small btn btn-primary rounded form-control">Add Color</button>
    <button type="button" id="remove-color" class="btn btn-warning rounded form-control">Remove Color</button>
  </div>
</div>  

Ответ №1:

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

 $(document).on("click",".add-size",function(){
    $(this)
        .parent()
        .find(".size-input-house")
        .html($(".size-input-house")
            .html() '<div class="form-group">'  
        '<input type="text" class="form-control sizes" placeholder="Size"></div>');
});
  

и таким же образом для другого:

    $(document).on("click",".remove-size",function(){
        if($(".sizes").length !== 1){
            $(".sizes").last().remove();
        }
    });
  

Комментарии:

1. Хорошо, отметил, сэр

2. lol, это сработало, это было быстро. Хотел бы я быть лучше в этом. Большое спасибо, сэр

Ответ №2:

Вот решение и рабочий код:

  $(document).on("click","#add-color",function(){
        $("#color-input-house")
            .html($("#color-input-house")
                .html() '<div class="form-group">'  
            '<input type="text" class="form-control colors" placeholder="Color">'  
            ' <button type="button"  class="add-size small btn btn-primary rounded form-control">Add Size</button>'  
            ' <button type="button"  class="remove-size small btn btn-warning rounded form-control">Remove Size</button>'  
            ' <div class="size-input-house"></div></div>');
    });

    $(document).on("click","#remove-color",function(){
        if($(".colors").length !== 1){
            $(".add-size").last().remove();
            $(".remove-size").last().remove();
            $(".colors").last().remove();
        }
    });
    $(document).on("click",".add-size",function(){
        $(this)
            .parent()
            .find(".size-input-house")
            .html($(this)
                .parent()
                .find(".size-input-house")
                .html() '<div class="form-group">'  
            '<input type="text" class="form-control sizes" placeholder="Size"></div>');
    });
    $(document).on("click",".remove-size",function(){
        if($(".sizes").length !== 1){
            $(".sizes").last().remove();
        }
    });
  

Обратите внимание на $(document).on("click","#add-color",function(){ изменения по всему коду. Спасибо гению, который дал ответ выше.