2011-07-22 14 views
5

¿Cómo puedo reemplazar un texto específico a objetos HTML?Reemplazar texto con el elemento HTML

ejemplo:

var text = "some text to replace here.... text text text"; 

var element = $('<img src="image">').event().something... 

function ReplaceWithObject(textSource, textToReplace, objectToReplace); 

así que quiero conseguir esto:

"some text to replace < img src...etc >.... text text text" 

Y me gustaría manipular el elemento objeto sin llamar de nuevo $() método.

ACTUALIZACIÓN: He resuelto.

Gracias @kasdega, he hecho un nuevo guión basado en la secuencia de comandos, ya que en la secuencia de comandos no puedo modificar el "elemento" después de reemplazar. Este es el guión:

$(document).ready(function() { 
    var text = "some text to replace here.... text text text"; 
    var element = $('<img />'); 

    text = text.split('here'); 
    $('.result').append(text[0],element,text[1]); 
$(element).attr('src','http://bit.ly/mtUXZZ'); 
    $(element).width(100); 
}); 

que no sabía que el método append aceptar elementos múltiples. Esa es la idea, sólo es necesario para automatizar para múltiples sustituciones

Gracias a todos, y aquí el jsfiddle

Respuesta

0

puede utilizar $ (selector) .outerHtml para obtener la cadena HTML de un elemento

+0

bien. hago esto: var obj = $ (''); 'some string 2 replace'.replace (' string ', $ (obj) .outerHTML); pero cuando intento hacer esto $ (obj) .click (function() {console.log ('obras!');}); no trabajes – iLevi

3

hacer una división en el texto que desea reemplazar a continuación, utilizar los índices de matriz 0 y 1 ... algo así como:

function ReplaceWithObject(textSource, textToReplace, objectToReplace) { 
    var strings = textSource.split(textToReplace); 
    if(strings.length >= 2) { 
     return strings[0] + objectToReplace.outerHTML() + strings[1]; 
    } 
    return ""; 
} 

ACTUALIZACIÓN: he encontrado otro SO publicar Get selected element's outer HTML que me señaló a un pequeño p jQuery lugin que ayuda aquí.

creo que esto jsfiddle tiene lo que quiere. outerHTML es el pequeño complemento jquery que incluí en JSFiddle.

También puede utilizar reemplazar lo que reducirá algo de código: http://jsfiddle.net/kasdega/MxRma/1/

function ReplaceWithObject(textSource, textToReplace, objectToReplace) { 
    return textSource.replace(textToReplace, objectToReplace.outerHTML()); 
} 
+0

Por favor marque: http://stackoverflow.com/q/35942972/4290783 – Aariba

0
function textToObj (text,obj,$src){ 
    var className = "placeholder-"+text; 
    $src.html($src.html().replace(text,"<div class='"+className+"'></div>")); 
    $("."+className).replace(obj); 
} 
0

Puede reemplazar el código HTML directamente: http://jsfiddle.net/rkw79/qNFKF/

$ (selector) .html (function (i, o) { retorno o.replace ('old_html', 'new_html'); })

+0

Esto no responde a la pregunta: "Reemplazar texto ** ** ** con HTML ** elemento. – Luke

Cuestiones relacionadas