2013-03-05 12 views
1

내가 jQuery를에 순수 JS 텍스트 하이라이트 스크립트를 변환하고 있어요,하지만 난 insertNode에 jQuery를 동등한이 무엇인지 알아 내려고 노력 해요 :jQuery는 insertNode에 해당합니까?

:

var selection = window.getSelection().getRangeAt(0); 
var selectedText = selection.extractContents(); 
var span = document.createElement("span"); 
span.style.backgroundColor = "yellow"; 
span.appendChild(selectedText); 
selection.insertNode(span); 

가 나는 다음을 사용할 수 있습니다 생각 결과

var span = $("<span class='highlight'>" + selectedText + "</span>"); 
selection.insertNode(span); 

:

NOT_FOUND_ERR: DOM Exception 8: An attempt was made to reference a Node in a context where it does not exist. 
+0

, 왜 당신이 그것을 변환하는 그래서이 시도? –

+0

내 페이지의 나머지 부분은 jQuery에 있으므로 제복이 필요합니다. – Charlie

+0

__jQuery는 JavaScript__입니다. – Mathletics

답변

2

jQuery가 선택 영역에서 작동 할 수 있다고 생각하지 않습니다. 일반 JS 메서드를 사용해야합니다. span이 노드가 아닌 jQuery 객체이기 때문에 오류가 발생합니다.

또한 selection.extractContents()은 문자열이 아닌 DocumentFragment를 반환합니다.

var selection = window.getSelection().getRangeAt(0); 
var selectedText = selection.extractContents(); 
var span = $("<span class='highlight'>" + selectedText.textContent + "</span>"); 
selection.insertNode(span[0]); // pass the first node in the jQuery object 
+0

그 삽입'[개체 DocumentFragment]'... hmm – Charlie

+0

스팬 [0] .FirstChild 어때? – bfavaretto

+0

나는 이것을 놓쳐 버렸음에 틀림 없다 : 원래는' [object DocumentFragment]'주석이'[object DocumentFragment] '를 삽입하는 동안 – Charlie

0

사용의 앞에 추가() 또는 (추가) 또는 insertafter 속성() 또는는 insertAt()

$ (선택) .append();

+1

'selection.append (span)'을 사용하면'TypeError : 'undefined'가 함수가 아닙니다 ('selection.append (span)'평가)' – Charlie

+0

@Charlie : jQuery 객체에서만 jQuery 메서드를 사용할 수 있습니다. –

+0

'TypeError : 'undefined'의 편집 결과가 ('context.createDocumentFragment()')를 평가하는 함수가 아닙니다. – Charlie

0

당신은 jQuery 오브젝트 요소,하지를 삽입 할 : 자바 스크립트가 작동하면

selection.insertNode(span[0]); 
관련 문제