Jquery + PHP, удалить динамические строки из таблицы тд клик - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь удалить строку из таблицы, когда нажимаю на конкретный столбец строки. Я использую .live (), чтобы я мог удалить строки, добавленные из запроса ajax. Он работает нормально, моя проблема в том, что таблица приходит из php с двумя строками, затем я могу вставить новые и удалить их, но когда я удаляю одну из строк, поставляемых с php, она удаляет все строки из таблицы.

PHP:

<table id="listaEquipamentos">
<?php 
    if($this->listaEquipamentos){
     foreach ($this->listaEquipamentos as $equipamento) { 
      $UF = trim($equipamento['siglaUF']);?>
     <tr>
      <td><?php echo $equipamento['siglaUF'];?></td>
      <td><?php echo $equipamento['siglaLocalidade'];?></td>
      <td><?php echo $equipamento['siglaEstacao']?></td>
      <td><?php echo $equipamento['nomeEquipamento'];?></td>
      <td><?php echo $something; ?></td>
      <td align="center">
       <?php echo "<input class='bot1' type='button' value='X'> " ?>
      </td>
     </tr>
     <?php } ?>
    </table>

JavaScript:

$('#listaEquipamentos tr > td:nth-child(6)').live("click", function(){
 if(confirm("Do you want to remove this row?")){
  $(this).parent('tr').remove();
 }
});

$("#btnAddEquipamento").click(function(){
 var ok = 1;
 if($("#slcUF").val() == 0){
  alert("UF em Branco");
  ok = 0;
 } else if($("#slcLocalidade").val() == 0){
  alert("Localidade em Branco");
  ok = 0;
 } else if($("#slcEstacao").val() == 0){
  alert("Estacao em Branco");
  ok = 0;
 } else if($("#txtEquipamento").val() == ""){
  alert("Equipamento em Branco");
  ok = 0;
 } else if($("#slcEquipamento").val() == "0"){
  alert("Equipamentoo em Branco");
  ok = 0;
 }
 if(ok){
  if($("#slcAbrangencia").val() != ""){
   var toadd = $('#slcEquipamento option:selected').text();
   var existe = 0;

   $("#divListaEquipamento tr>td:nth-child(4)").each(function(index){
    if( $(this).text() == toadd)
     existe = 1;
        });

   if(existe != 1){

    var uf = $('#slcUF option:selected').text();
    var loc = $('#slcLocalidade option:selected').text();
    var est = $('#slcEstacao option:selected').text();
    if($("#slcEquipamento").val() > 0){
     $("#hdnEquipamento").val($("#slcEquipamento").val()+"||"+$('#slcEquipamento option:selected').text());
    }else{
     var equip = $('#txtEquipamento').val().substr(0,15);
     $("#hdnEquipamento").val(equip);
    }
    var tempLoc = loc.split("-");
    var tempEst = est.split("-");
    $("#hdnUF").val(uf.substr(0,2));
    $("#hdnLocalidade").val(tempLoc[0]);
    $("#hdnEstacao").val(tempEst[0]);
    $.post("/aplicacao/jm/index.php/janela/addequipamento", $("#frmNovaJanela").serialize(),
         function(data){
        if(data[0] != null){
         $(".tabResultado1 > tbody>tr:last").prev().append("<tr><td>"+data[1]+"</td><td>"+data[3]+"</td><td>"+data[5]+"</td><td>"+data[7]+"</td><td>"+data[8]+"</td><td><input class='bot1' type='button' value='X'></td></tr>");
         var total = parseInt($("#divListaEquipamento tr:last > td:nth-child(5)").text()) + parseInt(data[8]);
         $("#divListaEquipamento tr:last > td:nth-child(5)").text(total);
        }else alert("Problema ao gravar equipamento.")
        }, "json");    
   }else{
    alert('O Equipamento '+toadd+' já está na lista.');
   }
  }else{
   alert ("Favor Selecionar a Abrangencia.");
  }
 }
});

Я уже пробовал:

$(this).parent('tr').remove();
$(this).parents('tr').remove();
$(this).parent().parent().remove();
$(this).closest('tr').remove();

Ответы [ 3 ]

2 голосов
/ 19 октября 2010

Я, вероятно, делал что-то глупое! Я изменил некоторые вещи, и теперь это работает!

$('#listaEquipamentos tr > td:nth-child(6)').live("click", function(){
    if(confirm("Deseja remover esta linha?")){
        $(this).parent('tr').remove(); ;
    }
});

$("#btnAddEquipamento").click(function(){
    var ok = 1;
    if($("#slcUF").val() == 0){
        alert("UF em Branco");
        ok = 0;
    } else if($("#slcLocalidade").val() == 0){
        alert("Localidade em Branco");
        ok = 0;
    } else if($("#slcEstacao").val() == 0){
        alert("Estacao em Branco");
        ok = 0;
    } else if($("#txtEquipamento").val() == ""){
        alert("Equipamento em Branco");
        ok = 0;
    } else if($("#slcEquipamento").val() == "0"){
        alert("Equipamentoo em Branco");
        ok = 0;
    }
    if(ok){
        if($("#slcAbrangencia").val() != ""){
            var toadd = $('#slcEquipamento option:selected').text();
            var existe = 0;

            $("#divListaEquipamento tr>td:nth-child(4)").each(function(index){
                if( $(this).text() == toadd)
                    existe = 1;
              });

            if(existe != 1){

                var uf = $('#slcUF option:selected').text();
                var loc = $('#slcLocalidade option:selected').text();
                var est = $('#slcEstacao option:selected').text();
                if($("#slcEquipamento").val() > 0){
                    $("#hdnEquipamento").val($("#slcEquipamento").val()+"||"+$('#slcEquipamento option:selected').text());
                }else{
                    var equip = $('#txtEquipamento').val().substr(0,15);
                    $("#hdnEquipamento").val(equip);
                }
                var tempLoc = loc.split("-");
                var tempEst = est.split("-");
                $("#hdnUF").val(uf.substr(0,2));
                $("#hdnLocalidade").val(tempLoc[0]);
                $("#hdnEstacao").val(tempEst[0]);
                $.post("/aplicacao/jm/index.php/janela/addequipamento", $("#frmNovaJanela").serialize(),
                           function(data){
                                if(data[0] != null){
                                    $("#listaEquipamentos > tbody:last").append("<tr><td>"+data[1]+"</td><td>"+data[3]+"</td><td>"+data[5]+"</td><td>"+data[7]+"</td><td>"+data[8]+"</td><td><input class='bot1' type='button' value='X'></td></tr>");
                                    var total = parseInt($("#totalCliente").val()) + parseInt(data[8]);
                                    $("#totalCliente").val(total);
                                }else alert("Problema ao gravar equipamento.")
                             }, "json");                
            }else{
                alert('O Equipamento '+toadd+' já está na lista.');
            }
        }else{
            alert ("Favor Selecionar a Abrangencia.");
        }
    }
1 голос
/ 19 октября 2010

Попробуйте изменить это:

  $(this).parent('tr').remove(); ;

Кому:

  $(this).parent().remove(); ;
0 голосов
/ 19 октября 2010

Видели ли вы Datatables ?Поскольку я переключился на это, манипулирование таблицами стало намного проще, и это дает мне больше функциональности, чем я когда-либо хотел программировать.Конкретная страница, для которой я дал вам пример, предназначена для динамического выбора строк (для всех страниц, если он включен) и удаления выбранных строк.

Используя Datatables, я подхожу к этому решению, извлекая данные в(через AJAX) манипулирование в таблице с помощью Datatables, выполнение выбора, как описано в ссылке, затем удаление заключается не только в удалении элемента, как показано, но и в отправке вызова Ajax на сервер для удаления в таблице.,Datatables позволяет мне делать это через встроенный обработчик данных, который передает переменные $ _REQUEST на страницу, создавая запрос, который я, в свою очередь, могу использовать для удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...