2012-10-31 1 views
0

나는 다음과 같은 jQuery를 발췌가 : 나는 위의 함수가 트리거됩니다 id=basediv 태그의 텍스트를 선택할 때의 jQuery 함수는 DOM 요소 또는 임시 DOM 요소에 연결 연결없이 호출

Tselector.mouseup = function() { 
    var sel = getSelectionCharOffsetsWithin(document.getElementById("base")); 
    //... 
} 

매번를 마우스 버튼을 놓을 때. getSelectionCharOffsetsWithin(element)은 선택을 구문 분석하는 방법입니다 (추가 단계를 위해 필요함).

지금 내가하고 싶은 것은 내가 선택으로 할 수있는 것에 대한 옵션을 보여주는 툴팁을 팝업하는 것입니다. (iOS에 익숙한 사용자의 경우 웹 브라우저에서 텍스트를 선택할 때의 기능과 비슷합니다.)

문제는 jQuery가 작업을 수행하려면 DOM 요소가 필요하다는 것입니다. 예를 들어 tipsy 사용 :

$('#foo').tipsy(); 

툴팁을 id=foo을 갖는 div 태그로 연결된다.

mouseup 함수를 트리거 할 때 선택한 텍스트에 해당 요소가 없으므로 선택한 내용을 툴팁에 연결할 수 없습니다.

DOM 요소에 연결하지 않고 jQuery 함수를 직접 호출 할 수 있습니까? 예 : 마우스 위치로 도구 설명을 연결하는 경우)? 그렇지 않은 경우 내 이벤트에서 만들어지고 연결되지만 HTML 코드에 영구적으로 저장되지 않은 임시 DOM 요소로 해결 방법을 사용할 수 있습니까? 어떤 조언을 http://jsfiddle.net/noplacetoh1de/bYNmb/

감사 : 여기

이를 입증하는 바이올린입니다!

+0

문서 또는 창인 경우에도 연결할 개체가 있어야합니다. –

+0

마우스 위치에 연결하고 싶습니다. 가능합니까? jQuery로 어떻게 정의 할 수 있습니까? – noplacetoh1de

+0

마우스가 노드 또는 개체가 아니기 때문에 이벤트가 바인딩 될 수 없습니다. 브라우저와 상호 작용하기 만하면 브라우저가 클릭 또는 이동이 발생한 위치를 해석하고 이벤트를 적절하게 실행합니다. 마우스 버튼이 아래에서 위로 움직일 때마다 이벤트를 발생 시키려면 해당 이벤트를 문서에 바인딩하십시오. –

답변

0

이것이 가능하다고 생각합니다. sel 변수를 사용하여 HTML을 먼저 분할 한 임시 범위를 만듭니다. substr() 사용 (http://www.w3schools.com/jsref/jsref_substr.asp). 그런 다음 선택 항목 주위에 간격을 두십시오. 선택 항목이 숨겨지면 스팬의 innerHTML을 가져와야하지만 sel 변수를 다시 사용하여 해당 위치에 다시 가져온 다음이를 삭제합니다.

나는 mootools btw에서 훨씬 더 쉬운 일이라고 생각합니다. 어쩌면 우리가 계속할 수있는 바이올린을 설정할 수 있습니까?