Я новичок в jquery, так что простите меня, если это простая задача, но то, что я пытаюсь сделать здесь, двоякое. На моей странице может быть от 1 до 4 панелей отображения, и на каждой панели есть кнопка. Предполагается, что каждая из панелей дисплея действует независимо от других, но отображает то же содержимое, что и другие (подумайте о книге и возможности просмотра 4 разных глав учебника в каждой из панелей с навигацией в одной). не затрагивая содержание другого).
Я пытаюсь добиться этого, дублируя код панели дисплея, но присваивая каждой панели другой идентификатор (например, панель1, панель2, панель3, панель4), а затем имея соответствующие объекты jquery для каждой панели (названные так же, как идентификаторы панели дисплея). Итак, когда одна из кнопок нажата, я хочу найти идентификатор родительской панели и использовать его как имя переменной для моего объекта (если это возможно).
Вот урезанная версия того, что я пытаюсь сделать. Нажав 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
к nav-button
(в данном случае panel1
).
Затем я хочу использовать идентификатор в качестве имени переменной в 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, а затем запустить его через if-else?