2011-08-23 3 views
1

자바 스크립트를 사용하여 내 페이지에서 선택한 부분 문자열의 오프셋과 길이를 계산합니다. 이것은 어딘가에 저장되어 나중에 텍스트 위로 마우스를 가져 가면 jQuery에서 오프셋과 길이를 사용하여 특정 단어를 강조 표시하려고합니다. 다음은 하이라이트에 사용 된 기본 코드입니다.자바 스크립트/jQuery 부분 문자열 강조 표시

content = $("#reader").html(); 
newContent = content.substring(0,offset)+'<font style="color: red;">'+content.substring(offset,offset+length)+'</font>'+content.substring(offset+length,content.length); 
content = $("#reader").html(newContent); 

내 문제는 다음과 같습니다. 그러나 실제 HTML 코드에는 <p> 또는 다른 태그가 포함될 수도 있습니다. 결과적으로 강조 표시된 텍스트는 HTML 코드의 양에 따라 "이동"됩니다.

이 문제를 해결하는 가장 쉬운 방법은 무엇입니까?

답변

1

이것은 쉽게 해결할 수 없습니다. 텍스트에 대해 오프셋 및 길이를 계산해서는 안되지만 나중에 HTML로 작업하려는 경우 HTML을 통해 계산해야합니다. 그러나 HTML 태그를 기존 HTML 문자열의 어딘가에 삽입하면 유효하지 않은 중첩이 발생할 수 있습니다. 마지막으로 노드를 HTML 코드로 다시 삽입하면 연결된 이벤트 처리기와 같은 상태가 사라집니다.

0

태그를 제거하거나 DOM 방법을 사용합니다. .nodeType, .nodeValue.

1

사용

$ ("# 리더"). 텍스트() 대신 $ ("# 리더")의

. HTML은() 콘텐츠

에서 텍스트를 얻을 수 있습니다