Friday, May 6, 2011

jquery and RegExp‬

I build a function thar replace a keyword in the HTML to a link. The problem is that when the keyword is in a link then it will replaced it.

$(document).ready( function () {
 $("#content").highlight( "example", "<a href=\"http://www.example.com\">$1</a>" );});

jQuery.fn.highlight = function (text, o) {
return this.each( function(){
 var replace = o;
 $(this).html( $(this).html().replace( new RegExp('('+text+'(?![\\w\\s?&.\\/;#~%"=-]*>))', "ig"), replace) );
});}

and my HTML

<div id="content">
 <h2>the word "example" replaced by the link</h2>
 <p>this is an example</p>

 <p>this is an example number 2</p>
 <p><a href="http://www.wrong.com">this is an example</a></p>
</div>
From stackoverflow
  • Hi!

    I would check each element in the loop to see if it's a anchor tag before doing the replace.

    if( !$(this).is('a') ) {
      // Replace Code here
    }
    
    eyalb : i don't go over the text in a loop. i replace it with the replace function, so i cant check every replace.

0 comments:

Post a Comment