在「td」標籤內,如何在不刪除整個「span」標籤腳本的情況下替換「span」標籤後的「BMW」字? (在JQuery中)。如何安全地替換「td」標籤後的值? (在JQuery中)
單詞「寶馬」是通配符的措辭。它可以是 「福特」, 「沃爾沃」 等
我使用JQuery的 2.0
$('#'....).???
<td>
<span column="17" style="cursor:pointer"></span> BMW
</td>
在「td」標籤內,如何在不刪除整個「span」標籤腳本的情況下替換「span」標籤後的「BMW」字? (在JQuery中)。如何安全地替換「td」標籤後的值? (在JQuery中)
單詞「寶馬」是通配符的措辭。它可以是 「福特」, 「沃爾沃」 等
我使用JQuery的 2.0
$('#'....).???
<td>
<span column="17" style="cursor:pointer"></span> BMW
</td>
您可以使用.contents()
,.filter()
和.replaceWith()
:
實例:
$('table').find('td')
.contents()
.filter(function() {
return this.nodeType === 3;
})
.replaceWith("hello world");
});
如果HTML是用多個換行符。 – dc5
編輯:我忘了第一個電話的結束括號。
不知道如何識別列,因此您可能需要更改選擇器。這是一個直接的搜索和替換。你確實只想替換寶馬這個詞,對嗎?
// Example: $(table.cars td)
$('td').each(function()
{
var repl = $(this).html().replace('BMW', 'Ford');
$(this).html(repl);
});
嘗試了這一點...請注意,我省略任何文本節點這是空白:
$("YOUR TD SELECTOR HERE")
.contents()
.filter(
function() {
return this.nodeType == 3 && $(this).text().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
)
.text('text to replace here');
+1用於過濾空白。取決於如何編寫和/或縮小html,這肯定需要考慮。但.text似乎不起作用(replaceWith) – dc5
我不知道任何不錯的jQuery解決方案,所以我提供低等級l javaScript方式。對不起,但相信它有幫助。
$("td").each(function(i,v){
for (var i = 0;i < v.childNodes.length;i++){
if (v.childNodes[i].constructor.name=="Text"){
v.childNodes[i].nodeValue=v.childNodes[i].nodeValue.replace(/BMW/,"Volvo");
}
}
});
編輯:
這是小小彬不兼容所以它的更好的版本:
$("td").each(function(i,v){
for (var i = 0;i < v.childNodes.length;i++){
if (v.childNodes[i] instanceof Text){
v.childNodes[i].nodeValue=v.childNodes[i].nodeValue.replace(/BMW/,"Volvo");
}
}
});
在這裏,我把它帶到生活:http://jsbin.com/ItotOPo/1/edit?html,js,output
爲什麼downvote? – Polaris878
看到這個問題和答案爲您的答案:http://stackoverflow.com/q/4106809/870729 –
你成功針對該元素?如果沒有周圍的html,我們可能無法幫助您達成目標。一旦有針對性的,你可以很容易地使用正則表達式來刪除任何不在第一個跨度標籤內 –