ページに「静的な」HTML がいくつかあります。
<div id="DIVISIONS">
<ul class="nav nav-tabs" id="DIVISIONTABS">
@* <li> nodes will be injected here by javascript *@
</ul>
<div class="tab-content" id="DIVISIONTABPANES">
@* <div class="tab-pane"> nodes will be injected here by javascript *@
</div>
</div>
ページの読み込み時に、タブ「フレームワーク」を作成します。つまり、ブートストラップ タブとタブ コンテンツ コンテナーを作成します。
次の方法でプロセスをトリガーします。
$(window).bind("load", prepareDivisionTabs);
そして、「prepareDivisionTabs」はこれを行います:
function prepareDivisionTabs() {
// Retrieve basic data for creating tabs
$.ajax({
url: "@Url.Action("GetDivisionDataJson", "League")",
cache: false
}).done(function (data) {
var $tabs = $('#DIVISIONTABS').empty();
var $panes = $('#DIVISIONTABPANES').empty();
for (var i = 0; i < data.length; i++) {
var d = data[i];
$tabs.append("<li><a href=\"#TABPANE" + d.DivisionId + "\" data-toggle=\"tab\">" + NMWhtmlEncode(d.Name) + "</a></li>");
$panes.append("<div id=\"TABPANE" + d.DivisionId + "\" class=\"tab-pane\"></div>")
}
renderDivisionTabPaneContents(data);
}).fail(function (err) {
alert("AJAX error in request: " + JSON.stringify(err, null, 2));
});
}
情報については、上記の「renderDivisionTabPaneContents」がこれを行います。
function renderDivisionTabPaneContents(data) {
for (var i = 0; i < data.length; i++) {
var d = data[i];
renderDivisionTabPaneContent(d.DivisionId);
}
}
function renderDivisionTabPaneContent(id) {
var $tabPane = $('#TABPANE' + id);
$tabPane.addClass("loader")
$.ajax({
url: "/League/GetDivisionPartialView?divisionId=" + id,
cache: false
}).done(function (html) {
$tabPane.html(html);
}).fail(function (err) {
alert("AJAX error in request: " + JSON.stringify(err, null, 2));
}).always(function () {
$tabPane.removeClass("loader")
});
}
これまでのところすべて順調です。 ページが読み込まれ、タブのコンテンツがレンダリングされ、別のタブをクリックすると、関連するコンテンツが表示されます。
ここで、最初にすべてのコンテンツをロードするのではなく、タブの「表示」イベントを使用してタブ コンテンツをジャスト イン タイムでロードしたいと考えています。これをテストするために、タブが表示されたときに JavaScript アラートを受け取ることができることを確認したかっただけです。そのため、次のように作成して、タブ表示イベントの添付をトリガーします。
$(function () {
attachTabShownEvents();
})
これは次を呼び出します:
function attachTabShownEvents() {
$(document).on('shown', 'a[data-toggle="tab"]', function (e) {
alert('TAB CHANGED');
})
}
したがって、タブの変更後に「TAB CHANGED」アラートが表示されると思います。しかし...アラートが表示されません。
誰か助けてくれませんか?