2011-10-10 31 views
7

Cómo buscar y reemplazar comenzar etiqueta etiquetas y terminan en una cadena HTML usando Javascript/jQueryCómo buscar y reemplazar comenzar etiqueta etiquetas y terminan en una cadena HTML usando Javascript/jQuery

por ejemplo

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>"; 

Tengo que encontrar la etiqueta "div" y reemplazar con otra etiqueta hTML como etiqueta "p" de la etiqueta/"span"

cadena hTML resultante después de sustituir la etiqueta "div" de etiqueta "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>"; 

Por favor, sugiera cualquier solución.

Respuesta

2

Javascript con la expresión regular:

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

Véase también mi jsfiddle.

=== === ACTUALIZACIÓN

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

Su método de expresión regular es bueno, pero si usamos esto, el los atributos de las etiquetas se pierden Necesitamos mantener todos los atributos y el estilo mientras usamos esto. Entonces necesita una modificación – Prasanth

+0

¿Cómo modifico el segundo violín en caso de que necesite reemplazar las etiquetas div con un nombre de clase particular? – 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

Probando algo con jQuery, sin embargo, no estoy seguro si es mejor que lo que sugirió 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(); 
    } 
);