javascript - 为什么这个 jquery 脚本在更新表时创建多个警报

标签 javascript jquery html

我有一个小脚本(我是一个业余爱好者),它允许通过单击并更新弹出窗口来更新 a 的文本。它有效,但是当我测试它时,我注意到每次我单击 a 时,它似乎都包含上次的信息,这意味着每次我单击 td 时,脚本运行时间更长(通过警报触发看到第一次点击一次,第二次点击两次,依此类推)。我假设它与 $(this) 有关。是的,我知道有一个表更新插件,但对于我的用户将进行的三到四次编辑来说,它太过分了。这是代码和一个 jsfiddle http://jsfiddle.net/alsosun/QuLQH/1/ :

// clicking on a TD cell to update it
$('td').on('click', function () {

    $('#pop').popup('open');
    var cell = $(this).text();
    var org = $(this);
    $('#txt').val(cell);

    $('#close').on('click', function () {

        var TXT = $('#txt').val()
        alert(TXT)
        $(org).text(TXT)
        org = ""
    });

});

我必须添加 org = ""才能使其正常工作——不确定为什么。脚本运行后是否应销毁所有 var?

这是 html:

<table border="1">
    <tr>
        <td>click</td>
        <td>this</td>
    </tr>
    <tr>
        <td>thought</td>
    </tr>
</table>
<div id="pop" data-role="popup">
    <input id='txt'></input> <a href='#' data-role='button' data-rel="back" id='close' </div>

最佳答案

#close 的绑定(bind)移动到您的 td 处理程序之外,否则当您单击 td 时它会一直重新绑定(bind),因此多个细胞更新!我还使 org 成为全局变量,每当单击 td 时,都会为 this 分配适当的值。最终代码:http://jsfiddle.net/QuLQH/2/

var org;
$('td').on('click', function() {
    $('#pop').popup('open');
    var cell = $(this).text();
    org = $(this);
    $('#txt').val(cell)

});

$('#close').on('click', function(event) {
      var newTXT = $('#txt').val()
      //alert(newTXT) 
      $(org).html(newTXT)        
});

关于javascript - 为什么这个 jquery 脚本在更新表时创建多个警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667573/

相关文章:

javascript - Jquery一题

javascript - 通过硬件信息创建 Electron 原子应用

javascript - 获取表单内的所有文本区域,在单击按钮时解析包含的文本?

jquery - Javascript 从谷歌获取建筑物的图像

jquery - Bootstrap 模态表单适用于本地计算机,但不能实时运行

asp.net - 如何制作最大尺寸设置为包含 DIV 的 GridView

javascript - 让 jquery 标签插件在 IE 中工作

javascript - 密码确认未被触发

javascript - 如何使用 jquery 更改表格单元格背景颜色

jquery - Twitter 引导按钮悬停无法正常工作