Replace $(".keyword:contains('"+kw+"')") .each(function(){ With $(":contains('"+kw+"')").each(function(){
On Feb 3, 11:54 am, paulinstl <paulsha...@gmail.com> wrote: > yeah.. this finds it by classname (.keyword) , I need to be able to > traverse all elements > > On Feb 3, 9:39 am, Eric Garside <gars...@gmail.com> wrote: > > > Try: > > $(function(){ > > var keywords = [ ... ]; > > $.each(keywords, function(){ > > var kw = this, rx = new RegExp('/^ '+kw+' $/'); > > $(".keyword:contains('"+kw+"')") .each(function(){ > > $(this).text($(this).text().replace(rx, '<span>'+kw+'</ > > span>')); > > }); > > }); > > > }); > > > It's untested, but I think that should work? The Regex is adding > > whitespace to either side of the keyword intentionally, to only catch > > full words (so " the RED fox" gets matched but " was near a REDwood > > tree." does not. Though, I'm not a regexpert, so I'm not positive what > > I've given you is the right way to go there, but hopefully it gives > > you a base to work from. > > > On Feb 3, 10:20 am, paulinstl <paulsha...@gmail.com> wrote: > > > > Rob, > > > > My problem is that I have no way of knowing where the keyword may > > > appear. It might be tabular data (<TD>) or in descriptive paragraph > > > (<p>). > > > > So if my keyword is RED, then... > > > > BEFORE > > > <p> the red fox </p> > > > > AFTER > > > <p>the <span>red</span> fox</p> > > > > I'll have an array of keywords as well. var arrayx["one", "two" > > > "three"] > > > > On Feb 2, 5:57 pm, RobG <rg...@iinet.net.au> wrote: > > > > > On Feb 3, 8:01 am, paulinstl <paulsha...@gmail.com> wrote: > > > > > > I'm looking for a way to locate keywords to help the end user out. > > > > > > For instance, if I want to find the word "polar" then i'd like my > > > > > function to locate it, wrap it with a span, and assign it a function. > > > > > > so far I can locate using a content filter and classname like this... > > > > > > $(".keyword:contains('polar')") > > > > > > But this selects the whole element (paragraph, div, whatever) > > > > > > how do i focus in on JUST the text? > > > > > The most reliable method is to traverse the part of the DOM you want > > > > to search and look at the value of text nodes. If you want to > > > > highlight a particular character pattern, use a regular expression and > > > > DOM methods to wrap it in a suitable element, say a span. It would > > > > also be prudent to also put adjacent text in spans too, e.g. > > > > > <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dv> > > > > > might become: > > > > > <div><span>Lorem ipsum </span><span class="foo">dolor</span> > > > > <span> sit amet, consectetur adipiscing elit.</span></dv> > > > > > That way you can also deal with text found inside elements like B or > > > > QUOTE if necessary. > > > > > Other approaches such as using a regular exprssion and an element's > > > > innerHTML property, are likely to be error prone. > > > > > -- > > > > Rob- Hide quoted text - > > > - Show quoted text -