Выполнить функцию, если элемент не был выбран ранее
Когда div с .redactor
класс нажал, проверьте, если он уже в качестве выбранного элемента.
- Если он уже выбран, то ничего не делать.
Если он выбран заново, то
- Выполнить
initialize_redactor()
для этого текущего выбранного div, - И выполнить
destroy_redactor()
если был какой-либо div, который был ранее выбран.
- Выполнить
И пока любой из
.redactor
div выбирается, если щелкнуть кроме.redactor
div, затем выполнитеdestroy_redactor()
для текущего выбранного.redactor
дела.
Образец в codepen.io
HTML:
<div id="toolbar_wrapper">
<div id="toolbar">
</div>
</div>
<div id="content">
<div class="redactor">
<h1>Header</h1>
<p>Paragraph</p>
</div>
<div class="redactor">
<h1>Another Header</h1>
<p>Another Paragraph</p>
</div>
</div>
2 ответа
Решение
Вы должны перебрать каждый элемент ".redactor" и запустить destroy_redactor для выбранного элемента:
$('.redactor').on("click", function() {
$(".redactor").each(function () {
if($(this).hasClass("selected"))
{
destroy_redactor(current_edit);
$(this).removeClass("selected");
}
});
$(this).addClass("selected");
current_edit = $(this);
initialize_redactor(current_edit);
});
Я думаю, что вам просто нужно добавить еще две строки к вашему JS
Вы уничтожите ВСЕ .selected
ПОСЛЕ того, как вы проверите, есть ли у редактора выбранный класс:
if (!$(this).hasClass("selected")) {
destroy_redactor($('.selected'));
Затем, если класс уже выбран, удалите этот класс
} else {
$('.selected').removeClass('selected');
Вот кодекс, чтобы попробовать это: