0

id我使用以下脚本函数从网格中获取行。它工作正常。我在click函数中获得了 ID。但是,如果我尝试获取函数的外部,它将显示为 Empty。我需要selr外部的点击功能值吗?这个怎么做?

var selr='';           
$(document).ready(function(){
               $("#datagrid").click(function(e) {
                 row = jQuery(e.target).closest('tr');
                 getId= row.attr("id");//for getting row number
                 selr = $("#datagrid").getCell(getId,'companyid');//getting Row ID
                 alert('alert in'+selr);
                 });
                  alert('alert out'+selr);
});
4

5 回答 5

4

问题是,只有在您启动函数selr时才声明的值。click所以点击后检查jqGrid

里面的脚本$(document).ready();不起作用,并且会显示为空,因为在文档准备好之后,selr不会设置。

不要使用简单的变量,而是分配selr为全局变量。只需替换selrwindow.selr.

window.selr='';           
$(document).ready(function(){
    $("#datagrid").click(function(e) {
     row = jQuery(e.target).closest('tr');
     getId= row.attr("id");//for getting row number
     window.selr = $("#datagrid").getCell(getId,'companyid');//getting Row ID
     alert('alert in'+window.selr);
     });
     alert('alert out'+window.selr);
});
于 2012-09-04T05:35:10.780 回答
2

问题是第二个警报alert('alert out'+selr); 在 .click 函数执行之前被调用。因此,因此selr未设置 的值。

window如果您找到一种方法来规避这种情况,您可以进一步确保通过使用该对象来访问全局变量。例如

window.selr = null
 ...
window.selr = your value

但是,通常应不惜一切代价避免使用此类全局变量。

于 2012-09-04T05:35:46.287 回答
2

您在单击处理程序中分配值,因此在用户实际单击之前不会设置它。

如果您测试selr并发现它仍然等于您将其初始化为 ( '') 的值,则您知道用户尚未单击网格。

于 2012-09-04T05:34:42.043 回答
0

您已经将变量分配为全局变量。

问题是变量是在一个函数内部启动的,该函数在单击时触发$("#datagrid")alert('alert out'+selr);在 DOM 就绪事件时执行,很可能在click事件触发之前。

于 2012-09-04T05:37:48.740 回答
0

您无法在 click 函数之外获取 selr 值,
如果datagrid是表 ID,那么 $("#datagrid tr").eq(0)会给您第一行

于 2012-09-04T05:34:56.633 回答