0

我目前正在处理以 HTML 格式列出的记录,记录来自数据库,在该表的末尾部分,我有一些操作,编辑删除显示,我已经完成了编辑,这与我的 DELETE,我的 DELETE 操作是使用 ajax 完成的,但问题是我无法正确获取每个按钮的值,其中包含来自数据库的 ID。

这是删除按钮所在的表的一部分:

 <td width="61"><button id="delete" value="<?php echo "$arr[0]"; ?>">Delete</button></td>

这些是 jQuery 部分

$("#delete").click(function(){
    alert($("#delete").val()); <-- CAN"T GET THE CORRECT ID
    //AJAX PART HERE
})

问题是我无法正确获取我按下的按钮的值,我该怎么做,任何建议都非常感谢..

这是桌子的整体视图,

在此处输入图像描述

4

6 回答 6

6

未经测试,但我预计问题是您正在尝试获取 的val()所有匹配项#delete,这可能是您的所有删除按钮(如果没有看到您生成的 HTML,我无法知道)。

根据 HTML 规范,您实际上应该使用 class ofdelete和 select with.delete而不是 an id,因为 an应该引用唯一元素。id

$("#delete").click(function(){
    // note the use of `this` to refer to clicked object, rather than all delete buttons
    alert($(this).val());
    //AJAX PART HERE
})
于 2012-10-19T11:39:55.880 回答
0

首先,在服务器端编写delete方法,如delete.php,返回状态,如'error'和'success'

$("#delete").click(function(){
    var id = $(this).attr('id');
    //AJAX PART HERE
    $.get('delete.php?id=xxx',function(status){
        if (status == 'success') $(this).parent().remove();
    }
})
于 2012-10-19T11:41:18.133 回答
0

只需使用jQuery的'this'来访问函数内的按钮......

例如

代替

alert($("#delete").val()); <-- CAN"T GET THE CORRECT ID

alert($(this).val());
于 2012-10-19T11:45:22.080 回答
0

按钮的值是在其上显示为文本的内容,但这不会让您获得表格的 ID。此外,由于有多个删除按钮,请使用类而不是 id。

使用名为“db-id”的自定义属性将您的 html 代码更改为类似的内容,通过该属性您将找到要删除的记录:

<input class="delete" db-id="<?=$db-id?>" value="Delete"/>

然后,你的js代码可以这样调整:

$(".delete").click(function(){
    var dbid = $(this).attr('db-id');
    $.ajax({
        type: 'POST',
        url: 'script-url/here.php'
        data: 'id=' + dbid,
        success: function(feedback){
            if(success==true) $('tr[db-id="' + dbid + '"]').delete
        }
    }).error(){
        alert('Something went horribly wrong!');
    };
})

请注意,在成功功能中,您甚至可以使用使包含数据的行消失.delete()

另请注意,任何恶意用户都可以在浏览器中编辑按钮的 db-id,因此请在 php 脚本中采取所有必要的预防措施和验证!

于 2012-10-19T11:47:49.857 回答
0

试试这个:

  $("button[id=delete]").click(function(){  
      $(this).closest('tr').remove(); // Delete row
      alert($(this).attr('value'));  // ID
  });  

button[id=delete] - 因为你会有很多具有相同 ID 的按钮,最好使用 CSS 类...

于 2012-10-19T11:51:00.793 回答
0

好的,这是您的解决方案:

1) insted of id="delete" 使用类。像这样:

<td width="61"><button class="delete" value="<?php echo "$arr[0]"; ?>">Delete</button></td>

2)你的jQuery应该是:

$(".delete").click(function(){
    alert($(this).val()); <-- CAN"T GET THE CORRECT ID
    //AJAX PART HERE
})

这应该提醒propper id,我建议这个方法进行编辑,并显示动作......

于 2012-10-19T11:53:13.973 回答