Сообщение от Erolast
			 
		
	 | 
	
		С какой бы стати ему запускаться? 
Проверяй код, наверно, где-то еще вызов рендера есть.
	 | 
	
Первый раз плагин jQuery пишу, не знаю как это возможно, но я просто alert(1) туда вставлял без вызова render() и алерт срабатывал.
	
	
		
			Сообщение от Erolast
			 
		
	 | 
	| 
		Давай полный код.
	 | 
	
Хорошо. Вот вызов плагина:
$(document).ready(function () {
    $('#settings_grid').jsGrid({
        dataset: {
            ajaxUrl: '/jsgrid/settings'
        },
        controls: {
            headerCreate: 'Добавить в настройки',
            headerEdit: 'Редактировать',
            isAdd: true,
            isEdit: true,
            isDelete: true,
            pagination: 'double'
        },
        table: {
            limit: 5,
            orderBy: 'id',
            order: 'asc'
        },
        columns: {
            id: {
                name: '',
                isSearch: false,
                isSearchStrict: true,
                isSortable: true,
                render: function (content) {
                    return '<td>' + content.id + '</td>';
                }
            },
            type: {
                name: 'Тип',
                isSearch: false,
                isSearchStrict: false,
                isSortable: true,
                render: function (content) {
                    return '<td>' + content.type + '</td>';
                }
            },
            parameter: {
                name: 'Параметр',
                isSearch: false,
                isSearchStrict: false,
                isSortable: true,
                render: function (content) {
                    return '<td>' + content.parameter + '</td>';
                }
            },
            name: {
                name: 'Имя',
                isSearch: false,
                isSearchStrict: false,
                isSortable: true,
                render: function (content) {
                    return '<td>' + content.name + '</td>';
                }
            },
            value: {
                name: 'Значение',
                isSearch: false,
                isSearchStrict: false,
                isSortable: true,
                render: function (content) {
                    return '<td>' + content.name + '</td>';
                }
            }
        }
    });
});
Полный код плагина:
/*
 * JsGrid 0.0.1
 */
(function ($) {
    var settings,
        ajax,
        dom,
        defaults = {
        dataset: {
            ajaxUrl: null,
        },
        controls: {
            headerCreate: null,
            headerEdit: null,
            isAdd: true,
            isEdit: true,
            isDelete: true,
            pagination: 'bottom',
            perPageOptions: [10, 20, 50, 100, 500],
            totalName: 'Всего: ',
        },
        table: {
            page: 1,
            limit: 50,
            orderBy: 'id',
            order: 'asc',
            searchColumn: null,
            searchValue: null,
        }
    }
     ajax = {
        request: function (url, method, method_hidden, data) {
            // Ajax запрос в контроллер
            data['_method'] = method_hidden;
            if (method == 'post') {
                return $.post(url, data);
            }
            else {
                return $.get(url, data);
            }
        },
        index: function (settings) {
            // Метод контроллера index
            return this.request(settings.dataset.ajaxUrl, 'get', 'get', settings);
        },
        create: function (settings) {
            // Метод контроллера create
            return this.request(settings.dataset.ajaxUrl + '/create', 'get', 'get', settings);
        },
        store: function (settings) {
            // Метод контроллера store
            return this.request(settings.dataset.ajaxUrl, 'post', 'post', settings);
        },
        edit: function (settings) {
            // Метод контроллера edit
            return this.request(settings.dataset.ajaxUrl + '/' + settings.id + '/edit', 'get', 'get', settings);
        },
        update: function (settings) {
            // Метод контроллера update
            return this.request(settings.dataset.ajaxUrl + '/' + settings.id, 'post', 'put', settings);
        },
        destroy: function (settings) {
            // Метод контроллера destroy
            return this.request(settings.dataset.ajaxUrl + '/' + settings.id, 'post', 'delete', settings);
        }
    };
    dom = {
        render: function (container, settings) {
            // Отображение данных
            var request = ajax.index(settings);
            request.done(function (result) {
                // Элементы управления
                var html = '<div>' + settings.controls.totalName + result.total + '</div>';
                // Таблица
                html += '<div class="table-responsive"><table class="table">';
                // Заголовки
                html += '<tr>';
                for (var column in settings.columns) {
                    html += '<th>' + settings.columns[column].name + '</th>'
                }
                html += '<th></th></tr>';
                // Контент
                for (var row = 0; row < result.rows.length; row++) {
                    html += '<tr data-id="' + result.rows[row].id + '">';
                    for (var column in result.rows[row]) {
                        // html += '<td>' + result[row][column] + '</td>'
                        html += settings.columns[column].render(result.rows[row]);
                    }
                    html += '<td>';
                    if (settings.controls.isEdit) html += '<a href="#" class="jsgrid-edit"><i class="ficon-cog"></i></a>';
                    if (settings.controls.isDelete) html += '<a href="#" class="jsgrid-delete"><i class="ficon-cancel"></i></a>';
                    html += '</td></tr>';
                }
                html += '</table></div>';
                container.append(html);
            });
        },
        handlers: function (container, settings) {
            container.on('click', '.jsgrid-delete', function (e) {
                e.preventDefault();
                settings.id = $(this).closest('tr').attr('data-id');
                var request = ajax.destroy(settings);
                request.done(function (result) {
                });
            });
        }
    }
    $.fn.jsGrid = function (options) {
        // Если плагин ещё не проинициализирован
        if (!this.data('jsgrid')) {
            settings = $.extend(true, {}, defaults, options);
            this.data('jsgrid', settings);
            // Обработчики событий
            dom.handlers(this, settings);
        }
        else settings = this.data('jsgrid');
        dom.render(this, settings);
    }
})(jQuery);