2012-05-03 135 views
3

我不知道如何調用它,但讓我稱之爲半內部文本。如何替換HTML標籤的文本

<div id='myDiv'> 
    This is the semi-inner text 
    <div id='other'></div> 
    This is the semi-inner text 
<div> 

我想刪除/替換這些This is the semi-inner text使用jquery。

我該怎麼做?

+0

包裝它裏面用JS – Bongs

+0

你裏面'的'和替換文本應該用span,div,p或者什麼來包裝它。如果某些文本未被封裝,它不是一個有效的HTML頁面。 – benck

回答

3

如果你只關心子節點...

$('#myDiv').contents().filter(function() { 
    return this.nodeType == 3 
}).each(function() { 
    this.data = this.data.replace(/This is the semi-inner text/g, 'swapped'); 
});​ 

jsFiddle

如果要檢查所有後代節點,請在檢測到元素節點(this.nodeType == 1)時進行函數遞歸。

1

使用內容(),並過濾掉所有的nodeType等於3並刪除它們:

$('#myDiv').contents().filter(function() { 
    return this.nodeType == 3; 
}).remove(); 
0

使用下面的代碼替換內容

$("#other").html("your code"); 

和用戶包裝你的代碼帶標識的跨度標籤

0

最簡單的方法是將其放置在一個帶有如下標識的跨度中:

<div id='myDiv'> 
    <span id="myInnerText">This is the semi-inner text</span> 
    <div id='other'></div> 
    This is the semi-inner text 
<div> 

那麼這樣的替換:

$("#myInnerText").text("replacement text"); 
2
$('#myDiv') 
    .contents() 
    .filter(function() { 
     return this.nodeType == 3; 
    }) 
    .each(function() { 
     $(this).remove(); 
    }); 
0

你也可以做這樣的:

target_div = $("#myDiv") 
    reg_exp = /This is the semi-inner text/g; 
    new_text = "some other text" 

    target_div.html(
    target_div.html() 
     .replace(
     new RegExp(reg_exp), 
     new_text) 
     ); 
}); 

Demo