私は jquery を初めて使用するので、これが単純な作業である場合はご容赦ください。ただし、ここでやろうとしていることは 2 つあります。マイページには 1 ~ 4 個の表示パネルを配置でき、各パネルにはボタンがあります。各表示パネルは、他のパネルとは独立して動作するはずですが、他のパネルと同じコンテンツを表示します (本を考えてみてください。教科書の 4 つの異なる章を各パネルで表示し、1 つのパネルでナビゲーションを行うことができます)。別のコンテンツには影響しません)。
ディスプレイ パネルのコードを複製することでこれを達成しようとしていますが、各パネルに異なる ID (つまり、panel1、panel2、panel3、panel4) を与え、各パネルに対応する jquery オブジェクト (の id と同じ名前) を設定します。表示パネル)。そのため、ボタンの 1 つがクリックされたときに、親パネルの ID を見つけて、それをオブジェクトの var 名として使用したいと考えています (可能な場合)。
これが私がやろうとしていることの簡素化されたバージョンです。nav-button
、_
<div class="other-stuff">
<div id="pane11" class="display-panel">
<div class="row">
<div class="nav">
<button type="button" class="nav-button">Button</button>
</div>
</div>
</div>
</div>
div.display-panel
に最も近いのID を見つけたいnav-button
(この場合はpanel1
)。
次に、idをjqueryの変数名として使用したいと考えています。私は次のものを持っています:
var panel1 = displayPanel(1, 1);
var panel2 = displayPanel(2, 1);
var panel3 = displayPanel(3, 1);
var panel4 = displayPanel(4, 1);
function displayPanel(panelNumber, curContent) {
this.panelNumber = panelNumber;
this.curContent= curContent;
this.AdvanceContent = AdvanceContent;
function AdvanceContent() {
if ((this.curContent + 1) <= contentList.length - 1) {
this.curContent++;
} else {
this.ResetContent();
}
$("#panel" + this.panelNumber).find(".body-text").load('html/' + contentList[this.curContent] + '.html');
}
this.ResetContent= ResetContent;
function ResetContent() {
this.curContent = 0;
$("#panel" + this.panelNumber).find(".body-text").load('html/' + contentList[this.curContent] + '.html');
}
}
そして、この疑似スクリプトのようなことをしたい:
$(document).ready(function () {
$(".advance-content").click(function() {
var panel = existing displayPanel with name matching id of parent displayPanel;
panel.AdvanceContent();
});
});
親のdisplayPanel idを見つけて、if-elseで実行するよりも良い方法はありますか?