JQuery点击看似在同一类的所有按钮上被触发

时间:2014-09-01 10:15:36

标签: jquery ajax

我有一系列HTML链接,它们都具有相同的类但具有唯一的ID - ID包含数据库ID。

单击按钮时(通过单击该类的按钮检测到) - 它会调用ajax脚本,使用链接上传递的ID从数据库中删除。

我无法复制它,但我收到了大量关于所有项目被删除的报告 - 好像有人点击了页面上的每个链接(但保证他们没有)。我可以从备份中看到数据曾经存在,并且系统中没有其他代码从该表中删除。

验证PHP脚本以确保用户只能删除自己的项目。

有没有人有任何想法可能导致这个?

由于

示例:

HTML:

<a class="boatpic_delete" id="boatpicdelete_btn_1">Delete</a>
<a class="boatpic_delete" id="boatpicdelete_btn_2">Delete</a>
<a class="boatpic_delete" id="boatpicdelete_btn_3">Delete</a>

Jquery的:

 $(".boatpic_delete").live("click",function(){
        var id = $(this).attr("id");
        id = id.replace("boatpicdelete_btn_", "");
        var tile = $("#boatpic_tile_"+id);

        data = "action=picdelete&id="+id;
        $.ajax({
            type: "GET",
            url: pathToDashboard + "/editboat/ajax_boatpics.php",
            data : data,
            dataType: "json",
            success: function(response)
            {
                if(response && response.success == true)
                {                    
                    tile.remove();
                }
                else
                {
                    alert("Error, unable to delete");               
                }  
            },
            error: function(res){
                alert("Error, unable to delete");
            }
        });
    });

2 个答案:

答案 0 :(得分:2)

试试这个:

$(".boatpic_delete").click(function(){

而不是第一行。

<强> Check JSFiddle Demo

此外,您可以使用data这样的奇怪解决方案代替这种奇怪的解决方案:

<a class="boatpic_delete" id="boatpicdelete_btn_1" data-id="1">Delete</a>
<a class="boatpic_delete" id="boatpicdelete_btn_2" data-id="2">Delete</a>
<a class="boatpic_delete" id="boatpicdelete_btn_3" data-id="3">Delete</a>

使用id获取.data

var id = $(this).data("id");

<强> Check JSFiddle Demo

答案 1 :(得分:0)

我想知道jQuery是否生成了删除按钮和单击功能(即$(".boatpic_delete").click(function(){})。如果是这样,并且您要多次生成它们,则这些按钮将多次触发点击功能。

例如,您生成3个按钮和3个单击功能,最后生成的按钮将仅具有一个对应的单击功能,第二个将具有两个,第一个将具有3。

在这种情况下,您应该避免多次生成相同的单击函数,或者使用按钮ID而不是类。