如果之前未选择元素,则执行函数

时间:2015-09-02 17:54:55

标签: javascript jquery html dom redactor

单击具有.redactor类的div时,请检查它是否已作为所选元素。

  • 如果已经选中,则不执行任何操作。
  • 如果是新选择的话

    1. 执行当前所选div的initialize_redactor()
    2. 如果之前选择了任何div,则执行destroy_redactor()
  • 虽然选择了.redactor div中的任何一个div,但如果点击.redactor div以外的其他div,则为当前选定的destroy_redactor() div执行.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 个答案:

答案 0 :(得分:1)

我认为您只需要在js中再添加两行

在您检查编辑器是否具有所选类别之后,您将销毁所有.selected

if (!$(this).hasClass("selected")) {
    destroy_redactor($('.selected'));

然后,如果它已经选择了类,则删除该类

} else {
    $('.selected').removeClass('selected');

以下是尝试它的codepen:

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

答案 1 :(得分:1)

你应该遍历每个“.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);
});