I have an HTML document with about 30,000 words in it.
I'd like to be able to do something when a user clicks any word. For simplicity/concept right now, I'd just like to alert()
that word.
For example, in the paragraph about, if I were to click on "have" it should run alert("have")
.
I'm using jQuery.
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.
See it on jsFiddle.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With