2011-10-10 6 views
7

Come trovare e sostituire iniziare a tag e di fine tag in una stringa HTML utilizzando JavaScript/jQueryCome trovare e sostituire iniziare a tag e di fine tag in una stringa HTML utilizzando JavaScript/jQuery

ad esempio

var myString = "<span> Hello john</span><div> John likes to play guitar </div> <div style="color:Blue;font-weight:bold" class='quotes'>Anna likes to arrange flowers 
     </div>"; 

ho bisogno di trovare il tag "div" e sostituire con altri tag HTML come tag tag "p"/"span"

risultante stringa HTML dopo sostituire tag "div" per tag "p"

var replacestring="<span> Hello john</span><p> John likes to play guitar </p> <p style="color:Blue;font-weight:bold" class='quotes'>Anna likes to arrange flowers 
      </p>"; 

Si prega di suggerire qualsiasi soluzione.

risposta

2

JavaScript con l'espressione regolare:

myString = myString.replace(/<(\/)?div[^>]*>/g, '<$1p>'); 

veda anche il mio jsfiddle.

=== === UPDATE

myString = myString.replace(/<(\/)?div([^>]*)>/g, '<$1p$2>'); 

jsfiddle 2.

+2

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Baz1nga

+1

tuo metodo di espressione regolare è buono, ma se usiamo questo, il gli attributi dei tag sono persi. Abbiamo bisogno di mantenere tutti gli attributi e lo stile durante l'utilizzo di questo. Quindi ha bisogno di una modifica – Prasanth

+0

Come posso modificare il secondo violino nel caso in cui debba sostituire i tag div con un particolare nome di classe? – Sandeep

4
myString = $('<div />').html(myString).find('div').replaceWith(function() { 
    var p = $('<p />'); 
    p.html($(this).html()); 
    $.each(this.attributes, function(index, attr) { 
     p.attr(attr.name, attr.value); 
    }); 
    return p; 
}).end().html(); 

jsFiddle.

0

Provare qualcosa con jQuery, tuttavia, non sono sicuro che sia meglio di quanto suggerito da Alex.

var $replaceString=$(replaceString); 

$("div",$replaceString).each(
    function() 
    { 
     var $p=$(document.createElement('p')).html($(this).html()); 
     //add code to add any attribute that you want to be copied over. 
     $(this).after($p); 
     $(this).remove(); 
    } 
); 
Problemi correlati