#jquery #datatable
#jquery #datatable
Вопрос:
На этой странице
Вы можете видеть, что следующие коды присоединяют click
обработчик к функции tbody
для реализации функции выбора строк до инициализации фактического объекта datatable:
$("#example tbody").click(function(event) {
$(oTable.fnSettings().aoData).each(function (){
$(this.nTr).removeClass('row_selected');
});
$(event.target.parentNode).addClass('row_selected');
});
/* Init the table */
oTable = $('#example').dataTable();
Поскольку мне нужна эта функция для всех таблиц данных в моем проекте, я бы хотел, чтобы эти коды выполнялись автоматически при каждой инициализации объекта datatable.
Я нашел возможное место здесь (которое является fnInitComplete
событием), куда можно добавить эти коды:
Однако коды должны выполняться по умолчанию, а не как в примере, передавая их fnInitComplete
событию в объекте option.
Как вы думаете, как это можно сделать?
Большое спасибо всем вам.
Редактировать:
В конце концов, я решил определить объект опции глобальной таблицы, и я клонирую его и изменяю при необходимости, прежде чем использовать его для инициализации таблицы данных следующим образом:
//default table options defined globally, you can namespace it if you like
var jqDataTablesDefaultOptions:{
"fnDrawCallback": function (oSettings, json) {
var nTrs = this.fnGetNodes();
$(nTrs).click(
function(){
$(nTrs).removeClass('row_selected');
$(this).addClass('row_selected');
}
);
},
"aLengthMenu": [5,10,15,20,100],
"iDisplayLength":5,
"oLanguage": {
"sUrl": "/assets/lib/DataTables-1.8.2/media/language/zh_TW.txt"
},
"bJQueryUI": true
"sPaginationType":"full_numbers"
};
На каждой странице, которую я использую datatable, у меня будут следующие коды:
//copy the default options
var tableOptions=$.extend(true,{},jqDataTablesDefaultOptions);
//modify the options if necessary
tableOptions.iDisplayLength=10;
//init the datatable
$('#example').dataTable(tableOptions);
Пожалуйста, не стесняйтесь читать эту страницу по причине, по которой я использую fnDrawCallback
, а не fnInitComplete
.
Комментарии:
1. Единственное, что, похоже, вы могли бы сделать, это «обезьянье исправление» встроенной функции инициализации таблиц данных, чтобы также вызывать ваш собственный пользовательский код или, по крайней мере, объединять ваши пользовательские параметры по умолчанию. Если нет другого способа установить параметры по умолчанию для таблиц данных, которые я не видел в документации?
Ответ №1:
Я бы создал свой собственный плагин и использовал функцию jQuery $.extend для расширения параметров, которые вы устанавливаете, с помощью значений по умолчанию, которые вы хотите. Если вы не хотите создавать плагин для этого, вы можете использовать плагин DataTools.
Другой вариант — редактировать js-файл с данными — поиск «classSettings» в коде. Но, очевидно, это имеет большой недостаток в том, что если вы хотите перейти на новую версию, вам придется редактировать ее снова.
И для такого рода вещей я бы предпочел использовать fnRowCallback, поскольку в качестве аргумента у него есть элемент table tr doom, к которому вы можете привязать любое событие, которое хотите. Но вы должны перенести его в jQuery, если хотите использовать какие-либо функции jQuery.