发现实际页面内部是不是有 jqGrid 对象
Posted
技术标签:
【中文标题】发现实际页面内部是不是有 jqGrid 对象【英文标题】:Discover if the actual page has a jqGrid object inside发现实际页面内部是否有 jqGrid 对象 【发布时间】:2011-09-13 13:22:28 【问题描述】:标题中的问题几乎完成了:有什么方法可以使用 jquery 来查找 jqGrid 对象处理的元素?
更准确地说,我希望在网格上调用一个 reload 方法,如果页面上存在一个。 我正在使用以下代码
...
success: function (data)
//Check if there is a jqGrid on the page and if present, reloads its data
var jqGrid = $('.ui-jqgrid');
if ( jqGrid.length )
//get the grid id. The actual id object is in the form of "gbox_your_grid_id"
var gridid = "#" + jqGrid.attr('id').substring(5);
//time to reload
$(grid).trigger('reloadGrid');
但似乎从未调用过 reloadGrid 方法。有什么建议吗?
【问题讨论】:
【参考方案1】:很难提出任何完美的测试。例如,您可以尝试搜索“gbox”:$('div.ui-jqgrid')
- 它是一个包含 jqGrid 的所有组件的 div。如果$('div.ui-jqgrid').length > 0
则页面上至少存在网格。
你可以在bdiv里面搜索table
元素:
$('div.ui-jqgrid-bdiv table').length > 1
甚至为
if ($('div.ui-jqgrid > div.ui-jqgrid-view > div.ui-jqgrid-bdiv > div > table.ui-jqgrid-btable').length > 1)
// jqGrid exist
(详见here)。此外,您可以测试此类表格元素是否具有jqGrid
方法:
if ($.isFunction($('div.ui-jqgrid > div.ui-jqgrid-view > div.ui-jqgrid-bdiv > div > table.ui-jqgrid-btable').jqGrid))
// jqGrid exist
【讨论】:
谢谢。我已根据您的建议编辑了我的问题以添加更多详细信息。你能看一下吗? @Lorenzo:不准确。$('.ui-jqgrid')
不是 <table>
元素。所以你应该至少使用var jqGrid = $('div.ui-jqgrid-bdiv table');
或更准确的var jqGrid = $('div.ui-jqgrid > div.ui-jqgrid-view > div.ui-jqgrid-bdiv > div > table.ui-jqgrid-btable');
。您无需使用和var gridid
,只需调用jqGrid.trigger('reloadGrid',[page:1])
。见here。
@Lorenzo:您可以先找到 gbox,然后获取 id 的最后一部分来查找表格,但是像我在之前的评论中描述的那样直接搜索 gbox 内的表格似乎更好。 【参考方案2】:
我不知道 jqGrid 本身,但我很确定它会为样式元素添加自定义类,因此您很可能可以确定您感兴趣的类,然后使用 $('.classname')
抓取所有元素。
【讨论】:
以上是关于发现实际页面内部是不是有 jqGrid 对象的主要内容,如果未能解决你的问题,请参考以下文章