HTMLページがあります。段落のいくつかの単語を(マウスで)選択し、それらの選択された単語への参照を取得して、たとえば<span>...</span>
タグによってプログラムでカプセル化することは可能ですか?jQueryまたはHTML5/CSS3を使用できますか?
質問する
122 次
2 に答える
3
mouseup
ハンドラーを使用して、を使用できますgetSelection
。と呼ばれるdivがあるとするとtesttagging
、これはそのdiv内の選択したテキストにスパンを追加する方法です。このjsfiddleを参照してください。
$('#testtagging').on('mouseup',tag);
function tag(e){
tagSelection('<span style="color:red">$1</span>');
}
function tagSelection(html) {
var range, node;
if (document.selection && document.selection.createRange) {
//IE
range = document.selection.createRange();
range.pasteHTML(html.replace(/\$1/,range.text));
return true;
}
if (window.getSelection && window.getSelection().getRangeAt) {
//other browsers
range = window.getSelection().getRangeAt(0);
node = range.createContextualFragment(
html.replace(/\$1/,range.toString())
);
range.deleteContents();
range.insertNode(node);
}
return true;
}
[編集]IEでも使用できるように調整。JsFiddleも適応されています
于 2012-07-11T10:00:46.890 に答える
0
すべての段落の単語をspan
要素にラップすることを提案します。
var r = /(\S+)/ig;
var text = $("p").text();
$("p").html(text.replace(r, "<span class='w'>$1</span>"));
次に、ホバー/クリックイベントをバインドします。
$("p > .w").on("hover", function()
{
$(this).toggleClass("hover");
})
.on("click", function()
{
$(this).toggleClass("selected");
});
選択したテキスト範囲の単語を解析する場合は、を使用する必要がありますwindow.getSelection()
。
この質問を参照するか、このコードを適応させるように依頼してください。
于 2012-07-11T09:44:20.540 に答える