Delete dynamically-generated table row using jQuery

前端 未结 6 2003
情深已故
情深已故 2020-12-31 02:28

the code below add and remove table row with the help of Jquery the add function works fine but the remove only work if I remove the first row

         


        
相关标签:
6条回答
  • 2020-12-31 02:56

    I know this is old but I've used a function similar to this...

    deleteRow: function (ctrl) {
    
        //remove the row from the table
        $(ctrl).closest('tr').remove();
    
    }
    

    ... with markup like this ...

    <tr>
    <td><span id="spDeleteRow" onclick="deleteRow(this)">X</td>
    <td> blah blah </td>
    </tr>
    

    ...and it works fine

    0 讨论(0)
  • 2020-12-31 03:01

    When cloning, by default it will not clone the events. The added rows do not have an event handler attached to them. If you call clone(true) then it should handle them as well.

    http://api.jquery.com/clone/

    0 讨论(0)
  • 2020-12-31 03:02

    You need to use event delegation because those buttons don't exist on load:

    http://jsfiddle.net/isherwood/Z7fG7/1/

     $(document).on('click', 'button.removebutton', function () { // <-- changes
         alert("aa");
         $(this).closest('tr').remove();
         return false;
     });
    
    0 讨论(0)
  • 2020-12-31 03:05

    You should use Event Delegation, because of the fact that you are creating dynamic rows.

    $(document).on('click','button.removebutton', function() {
        alert("aa");
      $(this).closest('tr').remove();
      return false;
    });
    

    Live Demo

    0 讨论(0)
  • 2020-12-31 03:14
      $(document.body).on('click', 'buttontrash', function () { // <-- changes
        alert("aa");
       /$(this).closest('tr').remove();
        return false;
    });
    

    This works perfectly, take not of document.body

    0 讨论(0)
  • 2020-12-31 03:15

    A simple solution is encapsulate code of button event in a function, and call it when you add TRs too:

     var i = 1;
    $("#addbutton").click(function() {
      $("table tr:first").clone().find("input").each(function() {
        $(this).val('').attr({
          'id': function(_, id) {return id + i },
          'name': function(_, name) { return name + i },
          'value': ''               
        });
      }).end().appendTo("table");
      i++;
    
      applyRemoveEvent();  
    });
    
    
    function applyRemoveEvent(){
        $('button.removebutton').on('click',function() {
            alert("aa");
          $(this).closest( 'tr').remove();
          return false;
        });
    };
    
    applyRemoveEvent();
    

    http://jsfiddle.net/Z7fG7/2/

    0 讨论(0)
提交回复
热议问题