2011-06-12 51 views
2

問題在標題中幾乎是完整的:有沒有什麼方法可以使用jquery來查找由jqGrid對象處理的元素?發現實際頁面中是否有jqGrid對象

更確切地說,我希望在網格上調用重載方法(如果頁面上存在方法)。 我使用下面的代碼

... 
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方法不會被調用。任何建議?

回答

5

很難提出任何完美的測試。例如,您可以嘗試搜索「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 
} 
+0

謝謝。根據您的建議,我編輯了我的問題以添加更多詳細信息。你可以看看嗎? – Lorenzo 2011-06-12 21:47:02

+0

@洛倫佐:不確切。 '$('。ui-jqgrid')'不是'

'元素。所以你應該至少使用'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}])''。見[這裏](http://stackoverflow.com/questions/3807623/jqgrid-paging-question/3808014#3808014)。 – Oleg2011-06-12 21:51:54

+0

@Lorenzo:你可以先找到gbox,然後得到id的最後一部分來查找表格,但是直接在gbox裏搜索表格就像我在前面的評論中描述的那樣,看起來更好。 – Oleg 2011-06-12 21:59:27

1

我不知道jqGrid本身,但我很確定在看它做什麼,它會爲樣式元素添加自定義類,因此您可以最有可能識別哪個類是您感興趣的,然後使用$('.classname')來抓取所有元素。

+0

您是否嘗試過'$(網格).jqGrid( 'reloadGrid')'? – Seldaek 2011-06-12 21:52:33

+0

我正在使用錯誤的類元素。現在它的作品:) – Lorenzo 2011-06-12 22:12:34

相關問題