删除jquery clone中的checkbox属性

时间:2015-05-21 10:24:22

标签: jquery html

我的脚本代码和html是这样的,当我尝试添加新行时,如果选中chekbox,则自动选择最后一个复选框的属性,而不是新行添加复选框,检查要删除新行中选中的复选框

脚本代码

<script type="text/javascript">
  $("input.tr_clone_add").live('click', function() {
    var $tr    = $(this).closest('.tr_clone');
    var $clone = $tr.clone();
    $clone.find(':text').val('');
    $tr.after($clone);
});
</script>  

表看起来像这样

   <table id="table-data" width="100%">
                  <tr class="tr_clone">
                    <td><input type="checkbox" autofocus name="status[]" value="Y"></td>
                    <td>
                      <select name="group_id[]">
                        <option>Select User</option>
                         <?php
                           $selectGroup = "SELECT  group_id,group_name
                                              FROM `group`";
                           $res = mysql_query($selectGroup);
                           while($row = mysql_fetch_array($res))
                           {
                             echo '<option value="'.$row['group_id'].'">'.$row['group_name'].'</option>';
                           }
                          ?>
                      </select>
                    </td>
                    <td><textarea name="address[]" rows="3" cols="35" placeholder="Enter Address"></textarea></td>
                    <td><input type="button" name="add" value="Add" class="tr_clone_add"></td>
                  </tr>
                </table>

3 个答案:

答案 0 :(得分:2)

检查以下代码。您可以使用$clone.find('input[type=checkbox]')找到克隆元素的复选框,并设置.attr('checked', false);

工作DEMO

 $("input.tr_clone_add").live('click', function() {
  var $tr    = $(this).closest('.tr_clone');
  var $clone = $tr.clone();
  $clone.find(':text').val('');
  $clone.find(':checked').attr('checked', false);
   // or 
  // $clone.find('input[type=checkbox]').attr('checked', false);
  $tr.after($clone);
});

答案 1 :(得分:1)

删除checked属性。试试 -

var $clone = $tr.clone().prop('checked', false);

OR

var $clone = $tr.clone().removeAttr('checked');

FIDDLE

答案 2 :(得分:0)

这是代码...

 $("input.tr_clone_add").live('click', function() {

          var $tr    = $(this).closest('.tr_clone');
          var $clone = $tr.clone();
          var $clone = $tr.clone().prop('checked', false);
         //  or var $clone = $tr.clone().removeAttr('checked');

     });

这并不是jQuery 3的新特性,通常将checked属性设置为false优于删除该属性。 “在所有其他情况下,应改用.prop(“ checked”,false)。” -我知道您在引用jQuery用户,但这也不正确:在您只能说this.checked = false的情况下,您不应说$(this).prop(“ checked”,false)