代码之家  ›  专栏  ›  技术社区  ›  Mark Henry

单击超链接时动态添加选择框

  •  1
  • Mark Henry  · 技术社区  · 7 年前

    我想动态添加 <select> 元素,但当我单击“添加更多字段”时,没有 <选择> 元素已添加。这是因为我使用超链接而不是按钮吗?(按钮也不起作用。)

    怎么了?

    $(document).ready(function() {
    
      var max_fields = 5; //maximum select boxes allowed
      var wrapper = $(".input_fields_wrap"); //Fields wrapper
      var add_button = $(".add_field_button"); //Add button ID
    
      var x = 1;
      $(add_button).click(function(e) { //on add button click
        e.preventDefault();
        if (x < max_fields) { //max box allowed
          x++; //text box increment
          $(wrapper).append('<div><select name="res_id[]"><option value="">select resort</option><option value="1664">Aalen</option></select><a href="#" class="remove_field">Remove</a></div>'); //add input box
        }
      });
    
      $(wrapper).on("click", ".remove_field", function(e) { //user click on remove text
        e.preventDefault();
        $(this).parent('div').remove();
        x--;
      });
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="input_fields_wrap">
      <a href="#" class="add_field_button">Add More Fields</a>
    </div>
    1 回复  |  直到 7 年前
        1
  •  1
  •   Logan Rodie    7 年前

    您可以使用代码顶部的变量来保存jquery对象。然后在创建的对象周围再次使用jquery构造函数( $(add_button) )中。你应该用 add_button 没有包装构造函数,因为我不确定你的工作方式是否可行。另外,我喜欢用 $(function(){}) ,因为它确保dom已加载。

    $(function() {
    
      var max_fields = 5; //maximum select boxes allowed
      var wrapper = $(".input_fields_wrap"); //Fields wrapper
      var add_button = $(".add_field_button"); //Add button ID
    
      var x = 1;
      add_button.click(function(e) { //on add button click
        e.preventDefault();
        if (x < max_fields) { //max box allowed
          x++; //text box increment
          wrapper.append('<div><select name="res_id[]"><option value="">select resort</option><option value="1664">Aalen</option></select><a href="#" class="remove_field">Remove</a></div>'); //add input box
        }
      });
    
      wrapper.on("click", ".remove_field", function(e) { //user click on remove text
        e.preventDefault();
        $(this).parent('div').remove();
        x--;
      });
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="input_fields_wrap">
      <a href="#" class="add_field_button">Add More Fields</a>
    </div>