2012-12-07 96 views
0

裏面我有一個td這種格式:替換文本的一部分的TD

<td> 
    Business Owner - Delivery Director <br> 
    <a href="mailto:[email protected]">[email protected]</a> 
</td> 

如何我只能替換文本"Business Owner - Delivery Director"別的東西?

使用this.text()獲取Business Owner - Delivery Director[email protected],但我只 Business Owner - Delivery Director.

+0

請勿使用jQuery。獲取文本節點! – Bergi

+0

你基本上想要一個​​和
之間的字符串嗎?一個簡單的正則表達式可以爲你做。 – Scorpion

+0

@Scorpion:沒有。OP不想操縱HTML – Bergi

回答

1

結構,你就必須做字符串操作,或者使用split

var td = $("selector_for_the_td_element"); 
var text = td.html().split("<br>"); 
text[0] = "new content"; 
td.html(text.join("<br>")); 

...或使用indexOfsubstring

var td = $("selector_for_the_td_element"); 
var text = td.html(); 
var index = text.indexOf("<br>"); 
text = "new content" + text.substring(index); 
td.html(text); 

現在,如果你可以改變你的HTML結構如下:

<td> 
    <span>Business Owner - Delivery Director</span><br> 
    <a href="mailto:[email protected]">[email protected]</a> 
</td> 

...它變得輕鬆了不少:

$("selector_for_the_td_element > span").text("new content"); 
+0

我不認爲他想做HTML操作 – Bergi

+0

@Bergi:這就是我讀的。 *「我怎樣才能取代文字......」*和*「'this.text()給我......」*。當然,這可以使用文本節點,但是由於他明確使用jQuery,因此面向jQuery的解決方案是合理的。 (雖然Upvoted Asad。) –

+1

@Bergi:OP沒有提到任何關於「HTML操作」的偏好。 T.J:我喜歡'span'的建議,很好的做法。 – Cerbrus

6

可以使用childNodes屬性來選擇第一個文本節點並改變其值:

$('td')[0].childNodes[0].nodeValue = "New content"; 

這裏是一個演示:http://jsfiddle.net/dpyNy/

+3

+1非常有用的提醒人們文本節點存在! jQuery傾向於掩蓋... –

+0

謝謝asad。 – user1184100

-1

如果HTML結構exactlly您發佈的內容,就可以實現這樣的:

this.childNodes[0].nodeValue = 'hello'; //this is the td element 
+0

我假設你的意思是''td'帶'this',但這是一個很差的變量名稱選擇。 – Cerbrus

+0

@Cerbrus它不是一個變量名,'this'不能是javascript中的變量名,我只是在問題的上下文中編寫它,也許它是在事件處理程序環境中,爲什麼你可以說它是一個可憐的名字這個片段? – dencey

+0

哦,我在他的問題中錯過了'this'。忘記我說了什麼:-P – Cerbrus