简体   繁体   English

使用jQuery定位多个类

[英]Use jQuery to target multiple classes

I have this jQuery code where it can add and remove a select input form dynamically. 我有此jQuery代码,可以在其中动态添加和删除选择输入表单。

$(document).ready(function() {
    var max_fields = 20; //maximum input boxes allowed

    var wrapper = $(".input_fields_wrap"); //Fields wrapper
    var add_button = $(".add_field_button"); //Add button ID
    var x = 1; //initlal text box count
    $(add_button).click(function(e) { //on add input button click
      e.preventDefault();
      if (x < max_fields) { //max input box allowed
        x++; //text box increment
        $( ".aaaa" ).first().clone().appendTo( ".input_fields_wrap" );
        }
    });
    $(wrapper).on("click", ".remove_field", function(e) {
      e.preventDefault();
      if($(".aaaa").length > 1) {
        $(this).parent('div').remove();
      } else {
        alert('You can not delete all elements');  
      }
    })
});

I want to use this jQuery code to many classes( class="input_field_wrap and etc." ). 我想将此jQuery代码用于许多类( class="input_field_wrap and etc." )。

The only thing I can see to make it work is to make it as an onclick function? 我能看到的唯一使其起作用的方法就是使其成为onclick函数?

function createSelect(wrapper, add_button, a) {
 var max_fields = 20;
 var x = 1;
 $(add_button).click(function(e) { //on add input button click
      e.preventDefault();
      if (x < max_fields) { //max input box allowed
        x++; //text box increment
        $( ".aaaa" ).first().clone().appendTo( ".input_fields_wrap" );
        }
    });
}

This doesn't work. 这行不通。

HTML: HTML:

 <div class="input_fields_wrap">
                      <a href="#" class="add_field_button" >Add Another Prescibed Medication</a>
                      <div class="aaaa">
                          Prescibed Medication Name:
                          <select class="form-control" name="prescription[]">
                              <option value="">Select an option</option>
                              <?php 

                            foreach($prescription->result() as $row)
                            { 
                              echo '<option value="'.$row->id.'">'.$row->name.'</option>';
                            }

                          ?>

                          </select>

                          <a href="#" class="remove_field">Remove</a>
                      </div>
                    </div>

You've just to use event delegation on() to deal with fresh DOM added dynamically as you do in the previous click event for .remove_field , it will be : 您只需使用事件委托on()来处理动态添加的新DOM,就像在.remove_field的上一个click事件中.remove_field ,它将是:

$('body').on('click', '.add_field_button', function(e) { 
  e.preventDefault();

  if (x < max_fields) { //max input box allowed
    x++; //text box increment
    $( ".aaaa" ).first().clone().appendTo( ".input_fields_wrap" );
    }
});

Hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM