강조 표시된 여러 HTML contenteditable 요소를 제거하는 방법은 무엇입니까?

ChosenUser

여러 HTML 요소를 강조 표시하고 Backspace를 눌러 제거하려면 어떻게해야합니까? WordPress 블록 편집기 및 Editor.js 에는이 기능이 있습니다. 사용자는 block를 눌러 여러 개를 선택 / 강조 표시 하고 제거 할 수 있습니다 Backspace. 내가 선택 (마우스)에 의해 강조하는 경우 다음이 코드에서, 하지를 클릭하여.block-1, .block-2, .block-3눌러 Backspace키 다음은 이러한 요소를 삭제해야합니다.

[노트]

  1. 모든 블록에는 contenteditable 속성이 있어야합니다.
  2. 내가 원하는 것을 정확히 데모 하려면 먼저 Editor.js 로 이동하십시오 .
<div class="block-1" contenteditable="true"> 1st Block </div>
<div class="block-2" contenteditable="true"> 2nd Block </div>
<div class="block-3" contenteditable="true"> 3rd Block </div>
<div class="block-4" contenteditable="true"> 4th Block </div>

여기에 이미지 설명 입력

압바스

2 명의 청취자가 필요합니다.

  • 1-mouseup에서 선택한 텍스트를 포착하고 TreeWalker사용 하여 강조 표시된 모든 요소를 ​​가져오고 s에서 selected클래스를 토글 .block합니다.
  • 2-백 스페이스를 잡을 키업시

편집하다:

이것을 사용 하고 답변을 개선했습니다.

$(document).on({
  'keyup': function(e) {
    if (e.which == 8)
      $('div.block.selected').remove();
  },
  'mouseup': getSelectedElementTags
});


function rangeIntersectsNode(range, node) {
  var nodeRange;
  if (range.intersectsNode) {
    return range.intersectsNode(node);
  } else {
    nodeRange = node.ownerDocument.createRange();
    try {
      nodeRange.selectNode(node);
    } catch (e) {
      nodeRange.selectNodeContents(node);
    }

    return range.compareBoundaryPoints(Range.END_TO_START, nodeRange) == -1 &&
      range.compareBoundaryPoints(Range.START_TO_END, nodeRange) == 1;
  }
}

function getSelectedElementTags() {
  var win = window;
  var range, sel, elmlist, treeWalker, containerElement;
  sel = win.getSelection();
  if (sel.toString().length == 0) return
  if (sel.rangeCount > 0) {
    range = sel.getRangeAt(0);
  }

  if (range) {
    containerElement = range.commonAncestorContainer;
    if (containerElement.nodeType != 1) {
      containerElement = containerElement.parentNode;
    }

    treeWalker = win.document.createTreeWalker(
      containerElement,
      NodeFilter.SHOW_ELEMENT,
      function(node) {
        return rangeIntersectsNode(range, node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
      },
      false
    );

    elmlist = [treeWalker.currentNode];
    while (treeWalker.nextNode()) {
      elmlist.push(treeWalker.currentNode);
    }
    elmlist.forEach(function(e) {
      if ($(e).hasClass('block')) {
        $(e).toggleClass('selected');
      }
    });
    sel.empty()
  }
}
div.block.selected {
  background-color: #ddf;
}

div.block {
  margin: 24px;
  border-bottom: 1px solid #ddd;
  font-size: 13px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container" contenteditable="true">
  <div class="block block-1" contenteditable="true"> 1st Block</div>
  <div class="block block-2" contenteditable="true"> 2nd Block </div>
  <div class="block block-3" contenteditable="true"> 3rd Block</div>
  <div class="block block-4"> 4th Block </div>
</div>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

녹아웃을 사용하여 데이터 테이블에서 변경된 요소를 강조 표시 / 표시하는 방법은 무엇입니까?

분류에서Dev

javascript를 사용하여 여러 요소를 html로 표시하는 방법은 무엇입니까?

분류에서Dev

WebDriver를 사용하여 웹 페이지에서 강조 표시된 요소를 찾는 방법은 무엇입니까?

분류에서Dev

트리거를 사용하여 XAML에서 단추를 강조 표시하는 방법은 무엇입니까?

분류에서Dev

노란색 선택 강조 표시를 제거하는 방법은 무엇입니까?

분류에서Dev

VScode에서 전체 줄 강조 표시를 제거하는 방법은 무엇입니까?

분류에서Dev

SwiftUI로 버튼 탭에서 강조 표시를 제거하는 방법은 무엇입니까?

분류에서Dev

양식을 열 때 파란색 강조 표시를 제거하는 방법은 무엇입니까?

분류에서Dev

Xcode에서 줄 강조 표시를 제거하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 버튼 클릭시 집중된 contenteditable 요소의 클래스를 변경하는 방법은 무엇입니까?

분류에서Dev

Excel : 조건부 서식을 사용하여 누락 된 데이터를 강조 표시하는 방법은 무엇입니까?

분류에서Dev

검색 후 강조 표시된 단어를 바로 가기를 사용하여 명령 줄에 직접 복사하는 방법은 무엇입니까?

분류에서Dev

클릭하여 강조 표시하지 않고 콘텐츠의 모든 키워드를 강조 표시하는 방법은 무엇입니까? JSP HTML 자바 스크립트

분류에서Dev

for 루프를 사용하여 매번 강조 표시된 다른 섹션으로 맵을 생성하는 방법은 무엇입니까?

분류에서Dev

Xcode 커서를 강조 표시하는 방법은 무엇입니까?

분류에서Dev

선택 항목에서 여러 행을 강조 표시 / 색칠하는 방법은 무엇입니까?

분류에서Dev

선택 항목에서 여러 행을 강조 표시 / 색칠하는 방법은 무엇입니까?

분류에서Dev

Fullcalendar DayCell에서 HTML 요소를 표시하는 방법은 무엇입니까?

분류에서Dev

Eclipse에서 강조 표시된 텍스트를 인쇄하는 방법은 무엇입니까?

분류에서Dev

Vim 편집기에서 검색된 텍스트를 강조 표시하는 방법은 무엇입니까?

분류에서Dev

onclick을 사용하여 여러 요소를 표시하는 방법은 무엇입니까?

분류에서Dev

XSLT를 사용하여 요소를 일치시키고 HTML을 출력하는 방법은 무엇입니까?

분류에서Dev

강조 표시된 단어를 가져와 데이터 속성으로 새 요소로 감싸는 방법은 무엇입니까?

분류에서Dev

스크롤하여 요소를 표시하는 방법은 무엇입니까?

분류에서Dev

Elixir : 구조화 된 데이터 요소를 표시하는 방법은 무엇입니까?

분류에서Dev

Vanilla JS를 사용하여 여러 HTML 텍스트 요소를 전환하는 방법은 무엇입니까?

분류에서Dev

제거 된 여러 패키지를 한 번에 다시 설치하는 방법은 무엇입니까?

분류에서Dev

제거 된 여러 패키지를 한 번에 다시 설치하는 방법은 무엇입니까?

분류에서Dev

HTML 프로그램에 여러 자리 표시자를 추가하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    녹아웃을 사용하여 데이터 테이블에서 변경된 요소를 강조 표시 / 표시하는 방법은 무엇입니까?

  2. 2

    javascript를 사용하여 여러 요소를 html로 표시하는 방법은 무엇입니까?

  3. 3

    WebDriver를 사용하여 웹 페이지에서 강조 표시된 요소를 찾는 방법은 무엇입니까?

  4. 4

    트리거를 사용하여 XAML에서 단추를 강조 표시하는 방법은 무엇입니까?

  5. 5

    노란색 선택 강조 표시를 제거하는 방법은 무엇입니까?

  6. 6

    VScode에서 전체 줄 강조 표시를 제거하는 방법은 무엇입니까?

  7. 7

    SwiftUI로 버튼 탭에서 강조 표시를 제거하는 방법은 무엇입니까?

  8. 8

    양식을 열 때 파란색 강조 표시를 제거하는 방법은 무엇입니까?

  9. 9

    Xcode에서 줄 강조 표시를 제거하는 방법은 무엇입니까?

  10. 10

    jquery를 사용하여 버튼 클릭시 집중된 contenteditable 요소의 클래스를 변경하는 방법은 무엇입니까?

  11. 11

    Excel : 조건부 서식을 사용하여 누락 된 데이터를 강조 표시하는 방법은 무엇입니까?

  12. 12

    검색 후 강조 표시된 단어를 바로 가기를 사용하여 명령 줄에 직접 복사하는 방법은 무엇입니까?

  13. 13

    클릭하여 강조 표시하지 않고 콘텐츠의 모든 키워드를 강조 표시하는 방법은 무엇입니까? JSP HTML 자바 스크립트

  14. 14

    for 루프를 사용하여 매번 강조 표시된 다른 섹션으로 맵을 생성하는 방법은 무엇입니까?

  15. 15

    Xcode 커서를 강조 표시하는 방법은 무엇입니까?

  16. 16

    선택 항목에서 여러 행을 강조 표시 / 색칠하는 방법은 무엇입니까?

  17. 17

    선택 항목에서 여러 행을 강조 표시 / 색칠하는 방법은 무엇입니까?

  18. 18

    Fullcalendar DayCell에서 HTML 요소를 표시하는 방법은 무엇입니까?

  19. 19

    Eclipse에서 강조 표시된 텍스트를 인쇄하는 방법은 무엇입니까?

  20. 20

    Vim 편집기에서 검색된 텍스트를 강조 표시하는 방법은 무엇입니까?

  21. 21

    onclick을 사용하여 여러 요소를 표시하는 방법은 무엇입니까?

  22. 22

    XSLT를 사용하여 요소를 일치시키고 HTML을 출력하는 방법은 무엇입니까?

  23. 23

    강조 표시된 단어를 가져와 데이터 속성으로 새 요소로 감싸는 방법은 무엇입니까?

  24. 24

    스크롤하여 요소를 표시하는 방법은 무엇입니까?

  25. 25

    Elixir : 구조화 된 데이터 요소를 표시하는 방법은 무엇입니까?

  26. 26

    Vanilla JS를 사용하여 여러 HTML 텍스트 요소를 전환하는 방법은 무엇입니까?

  27. 27

    제거 된 여러 패키지를 한 번에 다시 설치하는 방법은 무엇입니까?

  28. 28

    제거 된 여러 패키지를 한 번에 다시 설치하는 방법은 무엇입니까?

  29. 29

    HTML 프로그램에 여러 자리 표시자를 추가하는 방법은 무엇입니까?

뜨겁다태그

보관