2010-03-23 104 views
10

我試圖調用jQuery text()函數並通過trim()函數運行它,以刪除所有尾隨和前導空格。似乎在Firefox中工作良好,但是,在IE7中不起作用(拒絕刪除末尾的空格)。jQuery修剪功能在IE7中不起作用?

有什麼想法?也許是正則表達式的解決方案?

+0

你能演示一個演示嗎? – SLaks 2010-03-23 21:23:56

回答

5

所以這裏就是發生了什麼事情的要點。我在span元素中有一些文本,然後在文本後面有一個超鏈接/圖像,用戶可以點擊該超鏈接去除文本(見下面的代碼)。但是,我在span元素文本(在超鏈接的文本中)之後放置了一個 ,以便在span文本和「delete」圖像之間填充一點填充。所以即使我訪問元素的文本和修剪$.trim($(this).parent().text());它仍然包括在最後的空間!一旦我刪除這個額外的空間,事情工作正常。仍然不知道爲什麼$.trim()不會照顧它呢?!

<div> 
    <span> 
    <strong>SomeText</strong> 
    </span> 
    <a href="javascript:void(0);" onclick="removeMe();">&nbsp; 
    <img src="delete.png" width="15" height="15" border="0" name="imgRemove" /> 
    </a> 
</div> 
+3

您的用戶名是soooooooooooooooooooooooooooooooooooooo冒犯 – 2010-10-15 19:11:14

+0

它不起作用,因爲'$ .trim'尋找實際的空白區域,其中不包括' ',這是一個非編碼非制動空間,直到'。修剪「,它認爲這只是另一個文本,如」家「或」湯姆和傑裏「希望它有幫助 – Val 2012-02-27 15:41:05

0

是的,我有一個想法。最後的空格不在要調用text()函數的元素中。這可能發生在IE瀏覽器中,因爲它會以不同於firefox的方式處理空白,並會給它自己的元素,而firefox則不會。這只是一個預感,因爲你的問題沒有太多的繼續。

+1

這沒有意義。這是一個簡單的字符串 - 空白的起源是無關緊要的。 – SLaks 2010-03-23 21:27:40

+0

不,它沒有意義,如果修剪沒有工作的字符串,它是一個簡單的正則表達式,它應該工作。 – mkoryak 2010-03-23 22:16:45

+0

我認爲文本返回一個字符串,而不是你引用的節點/元素,除非他已經使用html代替文本lol的答案是無關的 – Val 2010-03-23 23:06:10

21

你很可能已經忘記了jQuery的chainning ...

試試這個

$('#selector').trim($('#selector').text())

不要偷懶與

$('#selector').text().trim();//this is wrong...

編輯

或作爲@Laserson甚至更好簡化它,與$.trim($(selector).text());

+0

如果我選擇不正確,這是否解釋了爲什麼這將在Firefox中工作,但不是在IE中? – YourMomzThaBomb 2010-03-23 22:51:15

+0

也許你應該用腳本的例子更新你的答案,這只是一個建議,至於你的ie7問題......或者使用帶有substr(-1,1)的if語句來檢查最後一個字母是否是空白 – Val 2010-03-23 22:57:43

+7

更簡單:$ .trim() – Laserson 2010-07-27 09:28:31

0

jQuery使用/^\ S + |在其裝飾\ S + /克方法 -

任何尾隨空間將必須被加到它返回後。

它可能取決於您何時閱讀它 - 嘗試直接從修剪操作提醒值。 如果讀取正確,則該字符串旁邊的任何內容都會添加空格。

如果trim真的返回一個尾隨空格,請使用text.replace(/^\ s + | \ s +/g,'')。