Я не очень хорош в JQuery, и у меня есть эта проблема:
Я использую вкладки jquery как:
<li><a href="content.php?div=Production">Production</a></li>
<li><a href="content.php?div=Digital">Digital</a></li>
объявлено как:
$(function() {
$( "#tabs" ).tabs({
load: function(event, ui) {
console.log("load event ran");
$('a', ui.panel).live("click", function() {
$(ui.panel).load(this.href);
return false;
});
}
});
$("#tabs").bind('tabsshow',function(event, ui) {
window.location = ui.tab;
})
});
в content
у меня есть определения сетки - каждая вкладка имеет свою собственную таблицу для загрузки:
switch($div){
case "Production":
$tab = '1';
include('div_master.php');
break;
case "Digital":
$tab = '2';
include('div_digital.php');
break;
default:
include('div_master.php');
break;
}
после вышеупомянутого php у меня есть grid Результаты загрузки объекта в БД:
$(function() {
var grid = $(".grid").loadGrid({ ....});
});
Я также храню объект сетки в переменной, чтобы получить доступ к sql query
, чтобы я мог экспортировать его в Excel, нажав кнопку на странице:
$('#toexcel').live("click",function() {
var sql = grid.data().sql;
$.ajax({
url: "toExcel.php",
data: "sql="+encodeURIComponent(sql),
});
sql = '';
});
});
Моя проблема в том, что когда я загружаю первую вкладку из кулака, экспортирую некоторые результаты в excel, затем переключаюсь на вторую вкладку - кнопка экспортирует тот же запрос из первой вкладки!
очевидно, что var sql = grid.data().sql;
не обновляется новыми данными, несмотря на перезагрузку сетки.
первая вкладка всегда работает независимо от того, сколько раз я переключаюсь между вкладками,
но вторая работает только тогда, когда page / DOM полностью перезагружена.
как мне это исправить?
Редактировать 2 - у меня есть раздельные сетки для обеих таблиц - все еще есть та же проблема.
я действительно не думаю, что проблема заключается в повторном использовании объекта grid - я думаю, что проблема в jquery UI - вкладках, особенно в том, как дескриптор перезагружает DOM.
Сложение
пожалуйста, смотрите консоль Firebug для запросов:
Посмотрите, когда он только что загружен - ajax отправляет только 1 запрос toExcel, но после переключения вкладки (div-m - 1-я вкладка, div-d - 2-я вкладка) отправляет 2 запроса. и в зависимости от вкладки отменяет 2-й запрос для первой вкладки, 1-й запрос для второй вкладки - поэтому 1-я вкладка всегда работает!