Узнайте, есть ли на самой странице объект jqGrid - PullRequest
2 голосов
/ 13 июня 2011

Вопрос почти завершен в заголовке: есть ли способ, используя jquery, найти элемент, который обрабатывается объектом 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 никогда не вызывается.Любое предложение?

Ответы [ 2 ]

5 голосов
/ 13 июня 2011

Трудно предложить какой-либо тест, который будет идеальным.Например, вы можете попробовать найти «gbox»: $('div.ui-jqgrid') - это div, который содержит все компоненты jqGrid.Если $('div.ui-jqgrid').length > 0, то на странице существует хотя бы сетка.

Вы можете искать элемент table внутри bdiv:

$('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
}

(подробности см. здесь ).Дополнительно вы можете проверить, есть ли у таких элементов таблицы метод jqGrid:

if ($.isFunction($('div.ui-jqgrid > div.ui-jqgrid-view > div.ui-jqgrid-bdiv > div > table.ui-jqgrid-btable').jqGrid)) {
    // jqGrid exist
}
1 голос
/ 13 июня 2011

Я сам не знаю jqGrid, но я уверен, что, глядя на то, что он делает, он добавляет пользовательские классы к элементам стиля, так что вы, скорее всего, сможете определить, какой класс вас интересует, и затем использовать $('.classname') для захватить все элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...