2011-09-01 36 views
0

最接近的问题我有一个代码可以在.click()中工作,但只适用于第一行。 我需要使用与数据动态生成相同的ID。
代码完美适用于第一行..并抓取TR ID,但不适用于第二行左右。。jquery/php

<tr id="25"> 
    <td>25</td> 
    <td>asd</td> 
    <td>gjkhgkj</td> 
    <td></td> 
    <!-- more td's --> 
    <td id="edit" name="25">Edit</td> 
    <td id="delete" name="25">Delete</td> 
</tr> 
<tr id="24"> 
<td>24</td> 
    <td>hhh</td> 
    <td></td> 
    <!-- more td's --> 
    <td id="edit" name="24">Edit</td> 
    <td id="delete" name="24">Delete</td> 
</tr> 

该函数删除客户数据:

$('#delete').click(function(e) { 
     var bid = this.id; // button ID 
     var customerid = $(this).closest('tr').attr('id'); // table row ID 

      $.ajax({ 
      type: "POST", 
      url: "delete.php", 
      data: "id="+customerid+"", 
      success: function(msg){ 
      // $('#'+customerid).css({backgroundColor: 'red'}); 
       $('#'+customerid).remove(); 
       alert("Sucessfully Deleted.") 
      // $('#tabledata').load('load.php');  
       } 
     });//end of $ajax 

回答

0

如果你有一个ID是必须被视为在AJAX流的操作数据库ID,请尝试以下操作:

$('#delete, #edit').click(function(e) { 
    var myID = $(this).attr('name'); 
    var myAction = $(this).html(); 
    var myRow = $(this).parent('tr'); 


    alert('You have choosen to ' + myAction + ' the row (' + myID + ').'); 
}); 

当然,在这之后,你可以做任何你想要的;)

1

我需要使用相同的ID是动态生成的数据。

您不能在单个页面上为多个元素使用相同的ID。如果您需要动态生成元素,请改为使用类。

<td class="delete" name="24">Delete</td> 

$('.delete').click(function(e) { 
0

由于一个ID必须是唯一的,该事件被仅绑定到id为“删除”的第一个元素。你想要的是一个关于这个元素的类,而不是再试一次。另一件事,也许父母('tr')比最接近()更有意义。

如果你不能添加一个类而不是一个id(这首先有点奇怪),你也可以使用'contains'选择字符串来查找字符串'delete'。像这样:

$("td:contains('delete')") 
0

这是因为您使用的是一个id选择器,它只返回一个元素而不是类选择器。你应该改变你的HTML和使用类

0

你不能使用相同的ID!

ID必须是唯一的。

难道你不能让它成为一个班。

或者,如果你需要这个数字,使它成为一个数据属性。