我使用以下脚本函数从网格中获取行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);
});
答案 0 :(得分:3)
问题是,selr
的值仅在您启动click
函数时才会声明。因此,请在点击jqGrid
。
$(document).ready();
中的脚本无效,并显示为空,因为在文档准备好后,selr
将无法设置。
不要使用简单变量,而是将selr
指定为全局变量。只需将selr
替换为window.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);
});
答案 1 :(得分:2)
您在点击处理程序中分配了值,因此在用户实际点击之前,它不会被设置。
如果您测试selr
并且发现它仍然等于您将其初始化为(''
)的值,则您知道用户尚未点击该网格。
答案 2 :(得分:2)
问题是第二个警告alert('alert out'+selr);
将在执行.click功能之前调用。因此,selr
的值未设置。
如果您找到绕过此方法的方法,则可以进一步确保使用window
对象访问全局变量。 E.g。
window.selr = null
...
window.selr = your value
但是,通常应该不惜一切代价避免这种全局变量。
答案 3 :(得分:0)
你无法获得点击功能以外的自我价值,如果 datagrid 是表格ID,那么$("#datagrid tr").eq(0)
会给你第一行
答案 4 :(得分:0)
您已将变量指定为全局。
问题是变量是在内启动的一个函数,点击$("#datagrid")
时触发,alert('alert out'+selr);
在DOM Ready事件上执行,很可能在{{{}之前执行1}}事件触发器。