WebアプリケーションでjQueryUIタブを使用しており、Ajaxを介してタブの各コンテンツを動的にロードしています。このようにして、各タブのコンテンツを別々のHTMLページに保持できます。
<div id="tabs">
<ul>
<li><a href="ajax/content1.html">Tab 1</a></li>
<li><a href="ajax/content2.html">Tab 2</a></li>
<li><a href="ajax/content3.html">Tab 3</a></li>
<li><a href="ajax/content4.html">Tab 4</a></li>
</ul>
</div>
タブをインスタンス化するためのJavaScriptは私のindex.jsにあり、HTMLはindex.htmlにあります。
ここで、index.jsにaddTabs()関数を作成します。この関数は、任意のタブコンテンツページ(content1.html、content2.htmlなど)から呼び出すことができます。
これどうやってするの?index.jsで関数を作成し、それをで呼び出すだけで試してみましたvar id = addTab();
。ただし、「 Uncaught ReferenceError:addTab is notdefined」というエラーが発生したため、これは機能しませんでした。関数は次のとおりです。
function addTab(tabTitle) {
// Add tab code
return id;
}
$.getScript()
関数を呼び出すwhichも使用しようとしましたvar id
が、関数の外部で返されたものでアクセスできません$.getScript()
(関数内でのみアクセスできます)。
この件について何か助けていただければ幸いです。
index.jsファイルは次のとおりです。
$(document).ready(
function () {
var tabs = $("#tabs").tabs();
tabs.tabs('option', 'selected', 2);
var tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>";
var tabCounter = 4;
function addTab(tabTitle) {
var label = tabTitle;
var id = "tabs-" + tabCounter;
var li = $(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label));
// 3 fixed tabs + 5 dynamic tabs
if (tabCounter > 8) {
$("#dialog").html(
'You have reached the maximum number of tabs allowed.').dialog(
"open");
return -1;
}
$("#tabId").replaceWith(
'<input type="hidden" name="tabId" id="tabId" value="' + id
+ '" />');
tabs.find(".ui-tabs-nav").append(li);
tabs.append("<div id='" + id + "'></div>");
tabs.tabs("refresh");
tabCounter++;
return id;
}
});