如何创建一个使用数组中的数据创建函数的循环?

时间:2016-02-04 08:15:35

标签: javascript php arrays function loops

如何在循环中执行此类操作? 或者有更好的方法吗?



      $('#btndelete' + rowid[i]).click(function(){
      $.ajax({
        type: "POST",
        url: "delete.php?id=rowid[i]",
        success: function(a) {
                $('#div-content').html(a);
        }
    });
});




1 个答案:

答案 0 :(得分:0)

可以把它放在一个循环中,通过给处理程序一些东西来关闭那些不会发生的变化,比如你在函数调用中的参数:

rowid.forEach(function(value) {
    $('#btndelete' + value).click(function() {
        $.ajax({
            type: "POST",
            url: "delete.php?id=" + value,
            success: function(a) {
                $('#div-content').html(a);
            }
        });
    });
});

(如果rowid不是数组,您可以轻松地将其设为Array.from [ES2015,但可以调整]或Array.prototype.slice.call(rowid)。)

此处有更多详情:JavaScript closure inside loops – simple practical example

但是,在这种特殊情况下,您不需要创建一堆处理函数;将rowid[i]放在元素上,然后对所有元素使用单个处理程序:

rowid.forEach(function(value) {
    $("#btndelete" + value).data("rowid", value);
});
$("[id^=btndelete]").click(function() {
    $.ajax({
        type: "POST",
        url: "delete.php?id=" + $(this).data("rowid"),
        success: function(a) {
            $('#div-content').html(a);
        }
    });
});

现在一个处理程序处理所有这些。

如果动态添加/删除这些按钮,您可以在某个容器上使用事件委派。