jquery - 使用 jQuery .change() 将变量传递给 onChange 事件

标签 jquery

我正在编写一个简单的 Web 应用程序,但遇到了某种障碍 - 我已经找到了解决方法,但我想在浏览 jQuery 文档后了解我做错了什么。

我有一个函数,当从页面调用时,插入一个表行:

var rowCount = 0;
function addRow(tbody){
    $("#"+tbody).append(
        $('<tr>').attr('id','row_'+rowCount).append(
            $('<td>').append('Content'),
            $('<td>').append($('<input>').addClass('text').attr('readOnly','readOnly')),
            $('<td>').append($('<input>').addClass('text').attr('readOnly','readOnly')),
            $('<td>').attr('id','barcode_cell'+rowCount),
            $('<td>').append($('<input>').addClass('text').addClass('quantity').attr('maxLength',3)),
            $('<td>').append($('<select>').change(function(){isMissing(this,rowCount)}))        
            )
    );
}

我主要关心的是最终的<select>框,它是 onChange 事件。我的 isMissing 函数:

function isMissing(elem, counter){
  alert(elem.value);
  alert(counter);
}

所发生的情况是框的选定值按预期进行警报,但是,行号始终警报最新行,无论哪一行调用它。相反,我希望它保存 rowCount 变量的值,就像引入行时一样,而不是添加其他行后变量的最新值。

我做错了什么?如何强制变量保持静态?我必须使用全局变量,因为有多个函数将行添加到多个表中,这是我可以确保任何表中的每一行都有唯一标识符的唯一方法。

最佳答案

发生这种情况是因为 rowCount 在全局范围内。您可以在 addRow 方法中进行类似的操作:

function addRow(tbody){
    var internalVariable = rowCount;
    $("#"+tbody).append(
        $('<tr>').attr('id','row_'+rowCount).append(
            $('<td>').append('Content'),
            $('<td>').append($('<input>').addClass('text').attr('readOnly','readOnly')),
            $('<td>').append($('<input>').addClass('text').attr('readOnly','readOnly')),
            $('<td>').attr('id','barcode_cell'+rowCount),
            $('<td>').append($('<input>').addClass('text').addClass('quantity').attr('maxLength',3)),
            $('<td>').append($('<select>').change(function(){isMissing(this,internalVariable)}))        
        )
);

关于jquery - 使用 jQuery .change() 将变量传递给 onChange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106398/

相关文章:

javascript - 如何检测元素右半部分和左半部分的点击

jquery - 我怎样才能用 jquery 覆盖这个 css 行为?

jquery 克隆选择不保留值

jquery - Bootstrap 选项卡中的多个 Google map

javascript - 查找特定类上方列表项的第一次出现 - JQuery

javascript - 在asp中使用jquery查找元素

javascript - 无法在 prestashop 上创建新帐户

javascript - 上层div的百分比?

javascript - jQueryUI 选项卡通过 SlideUp 和 SlideDown 切换

javascript - 在始终显示前几个元素的同时切换 Jquery 中的列表元素