Javascript jQuery.on()中的变量未更新

Javascript jQuery.on()中的变量未更新,javascript,jquery,html,Javascript,Jquery,Html,好的,我有一个jQuery.on()函数,看起来像这样 $("#grid").on('rowdoubleclick', function(event) { var appData = $("#grid").jqxGrid('getrowdata', event.args.rowindex); var appID = appData.application_id

好的,我有一个jQuery.on()函数,看起来像这样

$("#grid").on('rowdoubleclick', function(event) {

    var appData = $("#grid").jqxGrid('getrowdata', event.args.rowindex);
    var appID = appData.application_id                                                                     

    var cellClassTitle = function(row, column, value) {

        alert("VALUE: " + value + " appData.title: " + appData.title);
        if (value == appData.title) 
           {
            return "yellowCell"
            }
    }});

我的问题是cellClassTitle函数中的appData.title变量在第一次双击时只计算一次。cellClassTitle函数外部的appData变量在每次双击行时进行求值,但内部的appData.title值保持不变。如何让它在每次执行.on('rowdoubleclick')函数时更新?

在rowdoubleclick处理程序的作用域之外定义函数,例如

var appData = appData || {title:""};
var cellClassTitle = function(row, column, value) {

    alert("VALUE: " + value + " appData.title: " + appData.title);
    if (value == appData.title) 
    {
      return "yellowCell"
    }
}

$("#grid").on('rowdoubleclick', function(event) {

    appData = $("#grid").jqxGrid('getrowdata', event.args.rowindex);
    var appID = appData.application_id

});

免责声明:这是令人讨厌的,小心不要污染全球范围

您实际在哪里调用
cellClassTitle
函数?它在更新网格数据源时返回我的网格中的行/单元格的css类名…然后在您定义function@A.O.只有在函数被定义之前调用它才重要。实际上这里有一点。定义方法时不定义
appData
并不重要,但将
appData
限制在
rowdoubleclick
处理程序的范围内才重要。您需要在定义cellClassTitle的同时定义
appData
,然后在处理程序中丢失“var”前缀,这样才能起作用。但是(这是一个大问题),这指出了主要的体系结构问题,您依赖于全局范围,这是常识,Crockford说你几乎肯定不应该这么说:@MrJamin我所要做的就是在.on()处理程序外部定义appData,并删除内部的“var”,我仍然可以在内部定义cellClassName函数。这个小片段只用于突出显示我的许多网格中的某一行,不在处理程序范围之外定义appData真的那么重要吗?