Get Word Click In Paragraphs
Solution 1:
var p = $('p');
p
.html(function(index, oldHtml) {
return oldHtml.replace(/\b(\w+?)\b/g, '<span class="word">$1</span>')
})
.click(function(event) { alert(event.target.innerHTML) });
I took Pablo Fernandez's suggestions into account.
Update
So, will this be performant (e.g., it won't freeze up a slow user's browser?) Also, could you elaborate about how event.target works?
It may very well slow the performance of a page with 30,000 words. I'd argue that is excessive and probably would benefit from being paginated, but I don't know your exact circumstances.
event.target
property holds the element that started the event - the event bubbles up / propagates to its parent, which then handles the event, so you don't have 30,000 events on separate span
elements.
Solution 2:
Unfortunately I think you'll need to process the text and put a <span class ='clickableWord'>
YOUR_WORD </span>
around every word.
Then:
$(".clickableWord").click(
function(this){alert(this.text());}
);
Any method that tries to use absolute positioning to locate the word is liable to problems with zooming, font sizes, etc.
It's been addressed here Getting text at clicked location in an HTML element
Is there HTML doc static or are you generating it? If you are generating it then it shouldnt be too tough to add those tags around each word.
If you need to do it to an existing HTML after the fact then this is a little harder. Pick the elements (probably div or p) that contain most of the words and read these words into an array. Then re-output them followed by those span tags
Solution 3:
I did not go through the code to post how exactly it is done, but it is fact that this is done in here, without inserting any extra span
s or other elements into the sentence.
Post a Comment for "Get Word Click In Paragraphs"