【问题标题】: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 方法。有什么建议吗?

【问题讨论】:

    标签: jquery jquery-plugins jquery-selectors jqgrid


    【解决方案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')抓取所有元素。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 2013-02-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多