Я недавно застрял с этой проблемой, так что на случай, если кто-то уже недавно искал помощи по этому вопросу, я подумал, что было бы полезно заново открыть это обсуждение. Я работаю с jQuery 1.8.2 и jQuery UI 1.9.2. Я нашел лучший способ сделать это с последней версией пользовательского интерфейса jQuery - вернуть false
из обработчика событий beforeLoad
и отправить запрос getJSON
с URL-адресом, указанным на соответствующей вкладке.
HTML разметка:
<div id="tabs">
<ul>
<li><a href="/json/tab1.json">Tab 1</a></li>
<li><a href="/json/tab2.json">Tab 2</a></li>
<li><a href="/json/tab3.json">Tab 3</a></li>
</ul>
<div>
Код вызова вкладок:
$(function () {
$("#tabs").tabs({
beforeLoad: function (event, ui) {
var url = ui.ajaxSettings.url;
$.getJSON(url, function (data) {
ui.panel.html(data.text);
});
return false;
}
});
});
Когда обработчик beforeLoad
возвращает значение false, обычная функция отображения HTML-кода, полученного с URL-адреса, определенного на вкладке, отключается. Однако у вас все еще есть доступ к объектам event
и ui
, переданным обработчику beforeLoad
. Вы получаете URL-адрес из вкладки с этим синтаксисом ui.ajaxSettings.url
, а затем отображаете данные, возвращаемые запросом getJSON
, как показано в примере Content by Ajax :
ui.panel.html(data.text);
В моем случае это data.text, потому что JSON, который я получаю, содержит два свойства header
и text
.