0

次のjQueryの抜粋があります:

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

div上記の関数でタグ内のテキストを選択するたびにid=base、マウスボタンを離すとトリガーされます。getSelectionCharOffsetsWithin(element)選択を解析するメソッドです (以降の手順で必要です)。

私が今やりたいことは、選択範囲で何ができるかについてのオプションを示すツールチップをポップアップすることです。(iOS に詳しい方のために説明すると、Web ブラウザーでテキストを選択するときの機能に似ています。)

問題は、jQuery が操作を実行するための DOM 要素を必要とすることです。たとえば、tippyを使用する場合:

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

divツールチップは、 を持つタグで接続されていid=fooます。

関数をトリガーするときmouseup、選択したテキストにそのような要素がないため、選択をツールチップに接続できません。

DOM要素に接続せずにjQuery関数を直接呼び出す可能性はありますか(たとえば、ツールチップをマウス位置に接続します)? そうでない場合、イベントで作成および接続されているが、HTML コードに永続的に保存されていない一時的な DOM 要素を使用して回避策を実行することは可能でしょうか?

これを示すフィドルは次のとおりです。 http://jsfiddle.net/noplacetoh1de/bYNmb/

アドバイスをありがとう!

4

1 に答える 1

0

これは可能だと思います。sel変数を使用して一時スパンを作成し、最初に HTML を分割します。substr() の使用 ( http://www.w3schools.com/jsref/jsref_substr.asp )。次に、選択範囲をスパンで囲みます。選択範囲が非表示になったら、スパンの innerHTML を取得する必要がありますが、もう一度sel変数を使用して元の場所に戻し、破棄します。

これはmootoolsで行う方がはるかに簡単だと思います。続行できるフィドルをセットアップできますか?

于 2012-10-31T15:20:10.343 に答える