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 -

Reply via email to