У меня есть таблица (jqGrid) внутри одной из вкладок пользовательского интерфейса jquery (первой). В этой таблице есть запросы на обслуживание, которые определены как ссылки в этой таблице. Когда ссылки нажаты, они должны открыть подробную информацию о запросе на обслуживание в новой вкладке, следующей за первой.
Проблема, с которой я сталкиваюсь, заключается в том, что когда вы открываете один из запросов на обслуживание в новой вкладке и закрываете его, сбрасываете количество вкладок в ту, в которой размещена таблица; Попытка открыть запрос на обслуживание снова приведет к тому, что информация о запросе на обслуживание будет открыта в новой вкладке, которая равна количеству предыдущих вкладок, которые были закрыты ранее.
Если быть точным, если у нас есть #ui-tab-1
, щелкнув ссылку запроса на обслуживание внутри него, откроется информация о запросе на обслуживание в #ui-tab-2
. Теперь, закрыв вкладку #ui-tab-2
и щелкнув ссылку на другой запрос на обслуживание, активируется #ui-tab-2
вместе с новой вкладкой #ui-tab-3
. #ui-tab-2
содержит информацию о недавно открытом билете.
Я использую scrollableTabs v2.0 плагин / слой для обработки прокручиваемых вкладок.
Это код, который у меня есть
var $third_l_tabs = $('#table-nav').tabs({
show: function(event, ui) {
//we only care about the first tab which hosts the grid.
if (ui.index == 0) {
tableToGrid('#' + table_id, {
defaults: {
recordtext: "View {0} - {1} of {2}",
emptyrecords: "No records to view",
loadtext: "Loading...",
pgtext: "Page {0} of {1}"
},
loadonce: true,
height: 'auto'
});
jQuery('#' + table_id).trigger('reloadGrid');
}
$(ui.panel).on('click', "td[role='gridcell'] a", function(event) {
//here where the addition of new tab fails.
$third_l_tabs.tabs('add', this.href, $(this).find('b').text());
event.preventDefault();
});
},
})
И я проверял стек вызовов jQuery ui и заметил, что функция show()
вкладок вызывается для каждой из этих закрытых старых неразделенных старых вкладок!
Это трассировка, которую я получил в Chrome, и, как вы можете видеть последние 3 строки, шоу вызывается снова и снова
$.tabs.show() at scp.js:580
$.Widget._trigger() at jquery-ui-1.8.17.custom.js:581
$.widget._tabify.showTab() at jquery-ui-1.8.17.custom.js:7195
$.widget._tabify() at jquery-ui-1.8.17.custom.js:7282 <-- it starts from here
jQuery.extend.dequeue() at jquery-1.7.1.js:2066
jQuery.fn.extend.dequeue() at jquery-1.7.1.js:2098
jQuery.extend.each() at jquery-1.7.1.js:658
jQuery.fn.jQuery.each() at jquery-1.7.1.js:271
jQuery.fn.extend.dequeue() at jquery-1.7.1.js:2097
$.widget._tabify.hideTab() at jquery-ui-1.8.17.custom.js:7211
$.widget._tabify() at jquery-ui-1.8.17.custom.js:7278
jQuery.extend.dequeue() at jquery-1.7.1.js:2066
jQuery.fn.extend.dequeue() at jquery-1.7.1.js:2098
jQuery.extend.each() at jquery-1.7.1.js:658
jQuery.fn.jQuery.each() at jquery-1.7.1.js:271
jQuery.fn.extend.dequeue() at jquery-1.7.1.js:2097
$.widget.load() at jquery-ui-1.8.17.custom.js:7544
$.widget._tabify() at jquery-ui-1.8.17.custom.js:7285
jQuery.event.dispatch() at jquery-1.7.1.js:3256
jQuery.event.add.elemData.handle.eventHandle() at jquery-1.7.1.js:2875
jQuery.event.trigger() at jquery-1.7.1.js:3144
jQuery.fn.extend.trigger() at jquery-1.7.1.js:3781
jQuery.extend.each() at jquery-1.7.1.js:658
jQuery.fn.jQuery.each() at jquery-1.7.1.js:271
jQuery.fn.extend.trigger() at jquery-1.7.1.js:3780
$.xui.tabs.$.extend._create.hiddenOn.right() at jquery.scrollabletab.js:101
jQuery.event.dispatch() at jquery-1.7.1.js:3256
jQuery.event.add.elemData.handle.eventHandle() at jquery-1.7.1.js:2875
jQuery.event.trigger() at jquery-1.7.1.js:3144
jQuery.fn.extend.trigger() at jquery-1.7.1.js:3781
jQuery.extend.each() at jquery-1.7.1.js:658
jQuery.fn.jQuery.each() at jquery-1.7.1.js:271
jQuery.fn.extend.trigger() at jquery-1.7.1.js:3780
$.Widget._trigger() at jquery-ui-1.8.17.custom.js:578
$.widget.add() at jquery-ui-1.8.17.custom.js:7411
(anonymous function)() at jquery-ui-1.8.17.custom.js:421
jQuery.extend.each() at jquery-1.7.1.js:658
jQuery.fn.jQuery.each() at jquery-1.7.1.js:271
$.widget.bridge.$.fn.(anonymous function)() at jquery-ui-1.8.17.custom.js:418
$.tabs.show() at scp.js:581
jQuery.event.dispatch() at jquery-1.7.1.js:3256
jQuery.event.add.elemData.handle.eventHandle() at jquery-1.7.1.js:2875
Буду признателен за любую помощь в том, что может быть проблемой. Я включил JSFiddle пример для этой проблемы.