javascript - 内部函数引用上次调用的参数

标签 javascript jquery closures

似乎每次调用 edit() 函数时都会覆盖该函数中的变量。

function edit(el)
{
    $edit_img = $(el);
    $btn = $('<img width="15" height="15" src="images/add.png">');

    $edit_confirm = $edit_img.parent();

    $edit_confirm.append($btn);

    function restore_span()
    {
        $edit_img.show();

        $btn.remove();
    }

    $btn.click(restore_span);

    $edit_img.hide();
}

从此 onclick 处理程序调用编辑函数:

<img src = "images/edit-icon.png" width = "15px" height = "15px" onclick="edit(this)" />

当对多个图像(如上面的图像)调用 edit() 时,只有最近创建的图像会被删除。

我应该如何修改此函数才能修复此行为?

最佳答案

使用 var $btn 代替 $btn(也适用于其他变量)

当你写的时候 var $btn - 您创建局部变量 当没有 var 时 - 它是全局的

因此,在您的情况下,您每次都会替换这些变量(例如恢复函数中使用的 $edit_img)

关于javascript - 内部函数引用上次调用的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13711068/

相关文章:

swift - 等到异步 api 调用完成 - Swift/IOS

javascript - 一页上有多个 jQuery 图像库

javascript - 我如何从 css 变量中获取值并使用 javascript 多次自动更改它(循环)

没有图像和背景位置动画插件的 jQuery 菜单

Javascript 可链接闭包

scheme - 方案/ Racket 中关闭的目的是什么?

javascript - onClick后如何不刷新页面

javascript - 授权回调错误

javascript - 如何在 php 中获取 javascript 动态行值?

javascript - X 秒后禁用 3 个 onClick 函数