如何在单击JQuery中的单选按钮后附加一个部分?

时间:2017-12-09 19:38:40

标签: javascript jquery html5 append

这是问题所在。我需要在用户单击单选按钮后附加一个部分。然后,如果用户点击这个新的附加部分中的单选按钮,我需要附加另一个部分。我的代码不起作用。我做错了什么:(感谢你的帮助!!!

<section class="input_1">
<input type="datetime-local"><br/>
<input id="add_1" type="radio" value="1" name="q1">yes
<input id="del_1" type="radio" value="0" name="q1" >no
<br />
</section>


$(document).ready(function() {
 var max_fields = 2;
 var x = 1;

 $(document).on("click", "#add_1", function(e) {
 e.preventDefault();
 if (x < max_fields) {
  x++;
  $(".input_1").append('<section class="input_2">-.-.-<br/><input type="datetime-local"><br /> 
<input type="datetime-local"><br/>
<input id="add_2" type="radio" value="1" name="q2">yes
<input id="del_2" type="radio" value="0" name="q2" >no
</section>');
  })
 }
 });
});

$(".input_1").on("click", "#del_1", function(e) {
  e.preventDefault();
  $(this).parent('section').remove();
  x--;
  })
 });

//level 2
$(document).ready(function() {
 var max_fields_2 = 2;
 var x = 1;

  $(document).on('click', '.add_2', function(e) {
  e.preventDefault();
  var wrapper_2 = $(".input_2");
  if (x < max_fields_2) {
  x++;
  $(wrapper_2).append('<section>-.-.-<br/><input type="datetime-local"><a href="#" class="del_2">Remove</a><br /> <button class="add_3">return 2</button> </section>');
   $(wrapper_2).on("click", ".del_2", function(e) {
    e.preventDefault();
    $(this).parent('section').remove();
    x--;
   })
  }
  });
 });

编辑以下是根据 vlk

提供的解决方案的替代版本代码
 <input type="datetime-local"><br/>
 <input id="add_1" type="radio" value="1" name="q1" onclick="appendNewDiv()" ><label for="add_1">yes</label>
 <input id="del_1" type="radio" value="0" name="q1" onclick="removeDiv($(this))"> <label for="add_del">no</label>
  <br />
  <div class="container"></div>

JavaScript 
 var newDiv

 function appendNewDiv(){
  newDiv = '<div><p>This is a new div</p>';
  newDiv += '<label><input onclick="appendNewDiv()" '
  newDiv += 'type="radio">Add Another Div</label>'
  newDiv += '<label><input onclick="removeDiv($(this))" '
  newDiv += 'type="radio">Remove Div</label></div>'
  $('.container').append(newDiv);
 }

function removeDiv(radio){
  radio.closest('div').remove()
 }

1 个答案:

答案 0 :(得分:1)

尝试使用非常简单的东西。 使用内联事件调用

onclick="yourFunction()"

在附加的div上,使其更智能,代码更少。

为这个新的div创建一个变量

var newDiv = '<div>Hello</div>';

var newDiv;

function appendNewDiv(){
  newDiv = '<div><p>This is a new div</p>';
  newDiv += '<label><input onclick="appendNewDiv()" ';
  newDiv += 'type="radio">Add Another Div</label></div>';
  $('.container').append(newDiv);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
    <input onclick="appendNewDiv()" id="radio1" type="radio">
    Add Div
<label>
<div class="container"></div>