jQuery $ .ajax总是删除动态表上的第一行

时间:2013-01-31 05:13:47

标签: javascript jquery ajax

我在动态表格中遇到问题,完美地添加了新的线条,但没有删除线条。

这是我的代码:

<script type="text/javascript">
  $(document).ready(function(){
   $(document).on("click", ".trash", function(e){
    e.preventDefault();
    var $ligneParent = $(this).parent().parent();
    trash($ligneParent);
   });
  });

function trash(aLigneToTrash) {
 if (confirm("Vous allez supprimer définitivement cette ligne !")) {
 var maincourante =  $('table td.textemc').html();
 var data = 'maincourante=' + maincourante;

console.log(maincourante);

$.ajax({
  type: "POST",
  url: "form/delete/deletemc.php",
  data: data,
  cache: false,
  success: function() {
    aLigneToTrash.fadeOut('slow', function() {
      aLigneToTrash.remove();
    });
  }
});
return false;      
}
}
</script>

我的问题是变量“maincourante”一直返回第一个条目。 这个变量应该返回我想要删除的行的值。

这是我的新行代码:

var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td class="textemc">'+texte+'</td><td class="button"><button><i class="icon-pencil"></i></button></td><td class="button"><button class="trash"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast');
          $('#tablemc').append(nouvelle_ligne);

4 个答案:

答案 0 :(得分:1)

如果没有看到实际的DOM,有点难以辨别,但实际上并没有删除它:

aLigneToTrash

我想你可能想这样做:

var data = 'maincourante=' + aLigneToTrash.html();

$('table td.textemc').html()将始终选择DOM中的第一个td.textemc(这就是jQuery的工作原理)。

答案 1 :(得分:0)

感谢您的帮助。 我试试这个:

function trash(aLigneToTrash) {
 if (confirm("Vous allez supprimer définitivement cette ligne !")) {
  var data = 'maincourante=' + aLigneToTrash.html();

console.log(data);

$.ajax({
  type: "POST",
  url: "form/delete/deletemc.php",
  data: data,
  cache: false,
  success: function() {
    aLigneToTrash.fadeOut('slow', function() {
      aLigneToTrash.remove();
    });
  }
});
return false;      
}
}

和console.log返回给我:

maincourante=<td class="thtime">09h28</td><td class="textemc">ryhjzreyjryjryjr54654</td><td class="button"><button><i class="icon-pencil"></i></button></td><td class="button"><button class="trash"><i class="icon-trash"></i></button></td>

我希望“td class =”textemc的值“像这样maincourante=ryhjzreyjryjryjr54654

答案 2 :(得分:0)

我会这样做,这完美地工作

var data = 'maincourante=' + aLigneToTrash.children('.textemc').html();

再次感谢您的帮助

答案 3 :(得分:0)

尝试更新您对此的ajax调用:

....
$.ajax({
  type: "POST",
  url: "form/delete/deletemc.php",
  data: data,
  cache: false,
  success: function() {
     aLigneToTrash.fadeOut('slow', function() {
     aLigneToTrash.remove();
  $('#tablemc').append(' ');/*add a space to let browser know that there is a change*/
});
  }
});
return false;      
}
}
</script>

我有类似的问题,所以似乎浏览器(尤其是IE)没有检测到表上的大量更改;这个黑客对我有用。我希望它对你有用。 (假设#tablemc是基表)