Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery JQGrid:无法使用rowId获取位置_Jquery_Jqgrid - Fatal编程技术网

Jquery JQGrid:无法使用rowId获取位置

Jquery JQGrid:无法使用rowId获取位置,jquery,jqgrid,Jquery,Jqgrid,我使用jqGrid,在特定位置插入新行的时间非常长。我有rowId,但是当我调用以确定行的索引的位置时,我得到一个空值。我正在处理表格: var grid = jQuery("#myTable"); grid.jqGrid({ datatype: "local", colNames:['id','Type', 'Name', 'Total','In','Out'], colModel:[ { name: 'id', index: 'id', hid

我使用jqGrid,在特定位置插入新行的时间非常长。我有rowId,但是当我调用以确定行的索引的位置时,我得到一个空值。我正在处理表格:

var grid = jQuery("#myTable");
grid.jqGrid({
    datatype: "local",
    colNames:['id','Type', 'Name', 'Total','In','Out'],
    colModel:[
            { name: 'id', index: 'id', hidden: true, align:"center"},     
            {name:'type',index:'type', width:10, sortable:true, align:"center"},
            {name:'name',index:'name', width:40, sortable:true, align:"center"},
            {name:'total',index:'total', width: 10, sortable:false, align:"center"},
            {name:'in',index:'in', width:10, sortable:true, align:"center"},
            {name:'out',index:'out', width:10, sortable:true, align:"center"}
    ],
    width: "600",
    height: "900"
  });
但当我打电话时:

var dataIds = jQuery("#myTable").getDataIDs();
我得到以下回复:

Level 3.xpusdscdw,Level 3.scoach3,Level 3.xpusdscvs,Level 3.xpusdscah,Level 3.xpusdsctotem,Level 3.xpusdscsc
但是,当我尝试获取其中任何一个的行索引时,结果返回null。这就是我想做的:

var position = jQuery("#myTable").getInd(rowId,false);
alert("Position is: "+position+" for "+rowId);
然后我检查并查看我收到的警报,我看到:

Position is: false for Level 03.xpusdscvs
?

有什么好处?当您传入false作为第二个参数时,getInd应该返回rowId的行索引。 帮点忙


谢谢

我必须先说明一下HTML中id有哪些限制。它不可能是任何字符串。首先,它必须在页面上是唯一的。接下来,它应该遵循CSS和HTML对标识符的要求。不同版本的CSS和不同版本的HTML的要求略有不同。例如,在CSS 2.1规范中,您可以阅读以下内容,请参见:

在CSS中,包括元素名、类和ID的标识符 选择器只能包含字符[a-zA-Z0-9]和ISO 10646 字符U+00A0及以上,加上连字符和下划线 _; 它们不能以数字、两个连字符或后跟一个连字符开头 一位数。标识符还可以包含转义字符和任何 ISO10646字符作为数字代码,请参见下一项。例如, 标识B&W?可以写为B\&W\?或B\26 W\3F

在HTML5规范中,您可以看到

id属性指定其元素的唯一标识符id

该值在元素主元素中的所有ID中必须是唯一的 子树和必须至少包含一个字符。该值不能为空 包含任何空格字符

此外,如果您使用特殊字符,如。或jQuery选择器内的其他元字符。必须用两个反斜杠转义字符:\\。有关更多详细信息,请参阅

jqGrid在内部使用该方法来转义可能的元字符:

var myElement = $('#' + $.jgrid.jqID(someId));
如果你想让他的生活更轻松,我建议你只在ID中使用字符[A-Za-z]、数字[0-9]或u或-。此外,我建议您不要使用仅在情况下才能识别的ID。HTML在大多数情况下不区分大小写,因此最好使用[a-z]或[a-z]。此外,您应该但不必将字母用作id的第一个字符。这个简单的规则可以在将来节省您的时间

在您的例子中,像xpusdscdw、scoach3、xpusdscvs、xpusdscah、xpusdsctotem、xpusdscsc这样没有前缀级别3的ID是完美的

现在回到你的主要问题。如果在HTML表内的变量rowid中有一行的id,则可以使用以下代码获取行索引,如果该行:

var rowid = "xpusdscdw";
var myRow = $("#" + rowid);
alert("row index: " + myRow[0].rowIndex);
在代码中,我使用了rowid是元素的id这一事实。请参见行索引的说明