각 단어를 span
요소로 감싸서 클릭 할 수있게하는 텍스트가 있습니다. 강조 표시 할 첫 단어와 마지막 단어를 클릭하여 텍스트의 한 섹션을 강조 표시 한 다음 강조 표시를 실행하는 별도의 버튼을 클릭 할 수 있기를 원합니다 (예 : 선택한 단어와 첫 단어 사이에서 모든 단어 줄 바꿈). 강조 표시된 섹션 다음에 주석이 추가됩니다. 나는 진전을했는데이 부분까지 입수했습니다 :jQuery : wrapAll()은 공백을 유지하면서 요소를 확장합니다.
html로 :
<div id="textbox">
<span>Foo</span> <span>foo</span> <span>foo</span> <span>foo</span>
<span>foo</span> <span>foo</span> <span>foo</span> <span>foo</span>
<span>foo</span> <span>foo</span> <span>foo</span> <span>foo</span>.
</div>
<input id="commentbox" placeholder="Type your comment here">
<button id="exechighlight" value="Highlight">
자바 스크립트 : 나는 잘 일을 마무리 할 수
$('#textbox > span').click(function() {
$(this).addClass('selected');
});
$('#exechighlight').click(function(){
if($('#commentbox').val() !== '') {
$('.selected').filter(":last").after(' <span class="comment">' + $('#commentbox').val() + '</span>');
} else {
$('.selected').filter(':last').after(' <span class="comment">Default comment</span>');
}
$('.selected').filter(":first").nextUntil('.comment').andSelf().wrapAll('<span class="highlight">');
$('.selected').removeClass('selected');
$('#commentbox').val('');
});
하지만
wrapAll()
하지 않는 것 포장 된
span
요소 사이의 공백을 유지합니다. CSS로 시도했지만 아무런 소용이 없습니다.
.highlight {
background-color: #f00;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
}
진행 방법? 강조 표시를 취소 할 수 있어야합니다. 즉, <span class='highlight'>
의 포장을 풀고 원래 간격을 유지해야합니다.
당신은 당신이 ** [mcve]를 사용하여 스택 조각 (은'<>은 ** 실행 가능한로 그 코드 블록을 설정하는 경우가 ** 매우 ** 쉽게 도움을 만들 것 툴바 버튼). –
지적 해 주셔서 감사합니다. 나는 질문을 게시 할 필요가있을 때를 기억할 것입니다! – TwoRE