2011-07-22 131 views
5

如何用HTML對象替換特定文本?用HTML元素替換文本

例如:

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

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

function ReplaceWithObject(textSource, textToReplace, objectToReplace); 

所以我希望得到這樣的:

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

而且我想操縱對象要素,而不調用再次$()方法。

更新: 我解決了。

thanx @kasdega,我在你的腳本中創建了一個新的腳本,因爲在你的腳本中我不能修改替換後的「元素」。 這是腳本:

$(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); 
}); 

我不知道append方法接受倍數的元素。 這是想法,只需要

感謝名單自動化多個替換所有的,這裏的jsfiddle

回答

0

可以使用$(選擇).outerHtml獲取元素的HTML字符串

+0

好的。我這樣做:var obj = $(''); 'some string 2 replace'.replace('string',$(obj).outerHTML);但是當我嘗試這樣做$(obj).click(function(){console.log('works!');});不工作。 – iLevi

3

做一個分割上要替換然後使用數組索引0和1 ...類似的文字:

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

更新:我發現了另一個SO發佈Get selected element's outer HTML是向我指出一個小的jQuery p魯金在這裏幫助。

我相信這個jsfiddle有你想要的。 outerHTML是我包含在JSFiddle中的小型jquery插件。

您也可以使用替代,這將減少一些代碼:http://jsfiddle.net/kasdega/MxRma/1/

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

請檢查: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

您可以直接替換的HTML:http://jsfiddle.net/rkw79/qNFKF/

$(選擇)的.html(函數(I,O ){ return o.replace('old_html','new_html'); })

+0

這並不回答這個問題:「用** HTML **元素替換** text **。 – Luke