我已阅读this post有关您将jqGrid的no_legacy_api属性设置为true的原因。我有点得到答案。所以现在我的问题是你何时以及为什么要将该属性设置(或保留)为false?
我看了一下代码。由于我对jQuery扩展javascript对象的功能知识有限,在我看来,如果no_legacy_api为false,jqGrid的extend()将扩展jqGrid和jQuery。那是对的吗?如果是这样,你为什么要这样做?
答案 0 :(得分:1)
您可以找到两个使用jqGrid methods的示例:
$("#grid_id").jqGridMethodName(parameter1, ..., parameterN);
$("#grid_id").jqGrid("jqGridMethodName", parameter1, ..., parameterN);
jqGrid是jQuery插件。所以它扩展了jQuery对象上存在的方法列表(比如对象$("#grid_id")
)。如果您在一个页面上使用多个插件,则可能存在此问题。如果两个插件使用相同的名称(例如getInd
或clearBeforeUnload
),则会出现名称冲突,最后插入的Javascrpt插件将覆盖前一个插件的某些方法。
设置选项
$.jgrid.no_legacy_api = true;
允许您更改jquery.jqGrid.min.js
(jquery.jqGrid.src.js
)的行为,以便将jQuery扩展的数量减少到最小。 jqGrid首先注册方法$.jgrid.extend
(参见here),稍后用它来注册大多数jqGrid方法(例如,参见here)。
no_legacy_api
的正确用法如下
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/i18n/grid.locale-en.js"></script>
<script type="text/javascript">
$.jgrid.no_legacy_api = true;
$.jgrid.useJSON = true;
</script>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"></script>
因此,您先包含jquery
,然后将$.jgrid.no_legacy_api
设置为true
,最后您加入jquery.jqGrid.min.js
。稍后在您的代码中,您可以使用var selRow = $("#list").jqGrid("getGridParam", "selrow");
之类的结构,但不能再使用var selRow = $("#list").getGridParam("selrow");