2017-04-05 20 views
0

ユーザーがマウスオーバーしているテキストを検出する方法が見つかりません。 onmouseoverイベントはこの機能をサポートしていないようです。これを行う方法はありますか?例えばJavaScriptがマウスオーバーしたテキストを取得

https://www.w3schools.com/jsref/event_onmouseover.asp

、この段落の「例」を介してユーザマウスを置いた場合、私は彼らがマウスオーバーしていないだけという、彼らは「例」の上にマウスを置いたことを検出できるようにしたいと思います段落要素。

編集:私は私が必要とするものがあまりにもあいまいだと思う。基本的に実装しようとしているのは、動的テキスト用のポップアップ辞書です。ユーザーが単語の上にマウスを置くと、それは複合語の一部になる可能性があるので、単語だけでなく段落内にもその場所を置いて複合語かどうか確認できます。私は各単語/複合語の周りのスパンでHTMLを前処理する必要があるように思えます。

+0

おそらくこの質問に答えられます。スパンの各単語が最良の方法だと思われます:http://stackoverflow.com/questions/7563169/detect-which-word-has-been-clicked-on-within-a-text – iCode

答えて

0

あなたはちょうどこの例のようにスパンの内側にそれをラップ:

<p> 
Words Words Words Words Words <span onmouseover="alert('Mousing over A nice word!');">A Nice Word</span> Words Words Words Words 
</p> 

https://jsfiddle.net/a4q6gqs2/

+0

これは動作しますが、少しです私はダイナミックデータでこれを使用したいので煩わしく、イベントリスナーをすべての単語に追加する必要があります。私はこれをやることなくこれを行うことができる方法があることを期待していました。コンテキストについての情報を持っていたいという点でさらに複雑です。私の例では、ユーザがホバリングしていることを知りたい段落の「例」を超えています。また、その段落とその段落内の段落も知りたいと思います。 –

+0

動的データを行うコード(またはその一部)を別の方法で提供している可能性があります – Konstantinos

1

は、私は別の方法、あなたは例えば、Aに対して、貴様htmlタグ内のすべての単語をラッパーにthere'snt必要があると思います」スパン"。以下のコードでこれを行うことができます:

// wrap words in spans 
$('p').each(function() { 
    var $this = $(this); 
    $this.html($this.text().replace(/\b(\w+)\b/g, "<span>$1</span>")); 
}); 

// bind to each span 
$('p span').hover(
    function() { $('#word').text($(this).css('background-color','#ffff66').text()); }, 
    function() { $('#word').text(''); $(this).css('background-color',''); } 
); 
関連する問題