2017-04-12 29 views
0

我想追加一个新的html代码,购买点击一个按钮。然而在附件中有一个循环来显示html代码。如何使用循环内附加jQuery功能

<script> 
var day_left = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; 
$(".add_schedule").click(function() { 
       if ($('.day-part').is(':empty')){ 
        alert("You have limit schedule time!") 
       }else{ 
        var stack = $(this).parent().find('#stack').val(); 
        alert("form-schedule-"+stack); 
        $(this).before('<div class="form-schedule" id="form-schedule-'+stack+'">' + 
         '<div class="col-md-4">' + 
         '<label>Start Time</label><input type="time" placeholder="ex : 00:00" name="time['+stack+'][open_time]" class="open_time form-control" id="open_time'+stack+'">' + 
         '</div>' + 
         '<div class="col-md-4">' + 
         '<label>End Time</label><input type="time" placeholder="ex : 21:00" name="time['+stack+'][close_time]" class="close_time form-control" id="close_time"></div>' + 
         '<div class="col-md-4">' + 
         '<label>Pilih Hari</label> ' + 
         '<div class="dropdown dropdown-payment">' + 
         '<button class="btn btn-primary btn-sm dropdown-toggle" type="button" data-toggle="dropdown">Select Date <span class="caret"></span></button> ' + 
         '<div class="dropdown-menu"><div class="everyday-part">' + 
         '<li> <label> ' + 
         '<input type="checkbox" id="everyday" class="everyday_check_box form form-control" name="time['+stack+'][everyday]" value="7"> Everyday </label>' + 
         '</li>' + 
         '</div>' + 
         '<div class="day-part">'+ 

     // The Problem is Started From Here 
         $.each(day_left,function (i,val) { 
          $('<li><label><input type="checkbox" checked="checked" id="date_check_box" class="form form-control" name="time[' + stack + '][date][]" value="' + i + '">'+val+'</label> </li>'); 
         })+'</div> </div> </div> </div></div><div class="clearfix"></div><br> '); 


     // End Of the Problem 

        stack = parseInt(stack)+1; 



        $(this).parent().find('#stack').val(stack); 

       } 


      }); 
</script> 

实际上我可以附加html。但有一个错误在我的$.each(day_left,function(i,val)){});

它的唯一返回值为day_left他们就像sunday,monday,...。代码并不显示html代码

我的期望是,将这样的 enter image description here

返回,但我的代码只返回: enter image description here

回答

0

请这样

功能
function makeString(day_left,stack){ 
       var str = ''; 
       for(var i = 0; i <= day_left.length ; i++){ 
       str += '<li><label><input type="checkbox" checked="checked" id="date_check_box" class="form form-control" name="time[' + stack + '][date][]" value="' + i + '">'+day_left[i]+'</label> </li>'; 
       } 
       return str; 
      } 

以下更改

$(this).before('<div class="form-schedule" id="form-schedule-'+stack+'">' + 
        '<div class="col-md-4">' + 
        '<label>Start Time</label><input type="time" placeholder="ex : 00:00" name="time['+stack+'][open_time]" class="open_time form-control" id="open_time'+stack+'">' + 
        '</div>' + 
        '<div class="col-md-4">' + 
        '<label>End Time</label><input type="time" placeholder="ex : 21:00" name="time['+stack+'][close_time]" class="close_time form-control" id="close_time"></div>' + 
        '<div class="col-md-4">' + 
        '<label>Pilih Hari</label> ' + 
        '<div class="dropdown dropdown-payment">' + 
        '<button class="btn btn-primary btn-sm dropdown-toggle" type="button" data-toggle="dropdown">Select Date <span class="caret"></span></button> ' + 
        '<div class="dropdown-menu"><div class="everyday-part">' + 
        '<li> <label> ' + 
        '<input type="checkbox" id="everyday" class="everyday_check_box form form-control" name="time['+stack+'][everyday]" value="7"> Everyday </label>' + 
        '</li>' + 
        '</div>' + 
        '<div class="day-part">'+ 

    // The Problem is Started From Here 
        makeString(day_left,stack)+'</div> </div> </div> </div></div><div class="clearfix"></div><br> '); 

plnkr https://plnkr.co/edit/aBLj49Yv2g4EakeKjlqI?p=preview

0

,你可以做这样的...... 只使用返回功能,或让你迭代退货。

<script> 
var day_left = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; 
$(".add_schedule").click(function() { 
       if ($('.day-part').is(':empty')){ 
        alert("You have limit schedule time!") 
       }else{ 
        var stack = $(this).parent().find('#stack').val(); 
        alert("form-schedule-"+stack); 
        $(this).before('<div class="form-schedule" id="form-schedule-'+stack+'">' + 
         '<div class="col-md-4">' + 
         '<label>Start Time</label><input type="time" placeholder="ex : 00:00" name="time['+stack+'][open_time]" class="open_time form-control" id="open_time'+stack+'">' + 
         '</div>' + 
         '<div class="col-md-4">' + 
         '<label>End Time</label><input type="time" placeholder="ex : 21:00" name="time['+stack+'][close_time]" class="close_time form-control" id="close_time"></div>' + 
         '<div class="col-md-4">' + 
         '<label>Pilih Hari</label> ' + 
         '<div class="dropdown dropdown-payment">' + 
         '<button class="btn btn-primary btn-sm dropdown-toggle" type="button" data-toggle="dropdown">Select Date <span class="caret"></span></button> ' + 
         '<div class="dropdown-menu"><div class="everyday-part">' + 
         '<li> <label> ' + 
         '<input type="checkbox" id="everyday" class="everyday_check_box form form-control" name="time['+stack+'][everyday]" value="7"> Everyday </label>' + 
         '</li>' + 
         '</div>' + 
         '<div class="day-part">'+ 

     // The Problem is Solved 
      function(){var s=''; 
     $.each(day_left,function (i,val) { 
          s += '<li><label><input type="checkbox" checked="checked" id="date_check_box" class="form form-control" name="time[' + stack + '][date][]" value="' + i + '">'+val+'</label> </li>'; 
         }); 
       return s;} 
+'</div> </div> </div> </div></div><div class="clearfix"></div><br> '); 


     // End Of the Problem 

        stack = parseInt(stack)+1; 



        $(this).parent().find('#stack').val(stack); 

       } 


      }); 
</script>