Выполнить функцию, если элемент не был выбран ранее

Когда div с .redactor класс нажал, проверьте, если он уже в качестве выбранного элемента.

  • Если он уже выбран, то ничего не делать.
  • Если он выбран заново, то

    1. Выполнить initialize_redactor() для этого текущего выбранного div,
    2. И выполнить 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');

Вот кодекс, чтобы попробовать это:

http://codepen.io/anon/pen/vNEBNv

Другие вопросы по тегам